diff --git a/HOWTO.md b/HOWTO.md
new file mode 100644
index 0000000..50a7db8
--- /dev/null
+++ b/HOWTO.md
@@ -0,0 +1,939 @@
+# Analytics Platform - HOWTO Guide
+
+## Table of Contents
+1. [What is This Project?](#what-is-this-project)
+2. [Features Overview](#features-overview)
+3. [Architecture](#architecture)
+4. [Installation](#installation)
+5. [Configuration](#configuration)
+6. [Required Background Tasks](#required-background-tasks)
+7. [Tracking Setup](#tracking-setup)
+8. [How It Works](#how-it-works)
+9. [Database Structure](#database-structure)
+10. [Artisan Commands](#artisan-commands)
+11. [API Documentation](#api-documentation)
+12. [Maintenance](#maintenance)
+
+---
+
+## What is This Project?
+
+This is a **self-hosted web analytics platform** built with Laravel 11. It provides privacy-focused website analytics similar to Google Analytics or Plausible, allowing you to track visitor behavior, conversions, and engagement on your websites without relying on third-party services.
+
+### Key Capabilities
+- Real-time visitor tracking
+- Goal and conversion tracking
+- Custom event tracking
+- Funnel analysis
+- Automated alerts and notifications
+- Custom dashboards
+- Export analytics data
+- API access for integrations
+
+---
+
+## Features Overview
+
+### 1. **Visitor Tracking**
+- Automatic page view tracking
+- Session management (30-minute timeout)
+- Device, browser, and OS detection
+- Geolocation (country, region, city)
+- Bot filtering
+- UTM parameter tracking (campaign, source, medium, etc.)
+- Time on page measurement
+
+### 2. **Analytics Reports**
+- **Audience**: Geographic distribution, technology breakdown, languages
+- **Acquisition**: Traffic sources, referrers, campaigns
+- **Behavior**: Popular pages, landing pages, exit pages
+- **Events**: Custom event tracking with categories and labels
+- **Conversions**: Goal completions with revenue tracking
+
+### 3. **Goals (4 Types)**
+- **URL Destination**: Track when users visit specific pages
+- **Event Match**: Track custom events
+- **Duration**: Sessions longer than X seconds
+- **Pages Per Session**: Sessions with X or more pages
+
+### 4. **Advanced Features**
+- **Funnels**: Multi-step conversion tracking
+- **Segments**: Custom visitor segments for filtered reporting
+- **Alerts**: Automated notifications when metrics exceed thresholds
+- **Annotations**: Add notes to specific dates for context
+- **Custom Dashboards**: Drag-and-drop widget management
+
+### 5. **Data Management**
+- Automatic daily aggregation for performance
+- Configurable data retention (default: 365 days)
+- CSV export
+- API access with token authentication
+
+---
+
+## Architecture
+
+### Technology Stack
+- **Backend**: Laravel 11, PHP 8.2+
+- **Frontend**: Blade templates, Alpine.js, Tailwind CSS
+- **Database**: SQLite (default), MySQL/PostgreSQL compatible
+- **Queue System**: Database-backed (Redis/SQS optional)
+- **Build Tool**: Vite
+
+### Data Flow
+
+```
+Client Website (tracking script)
+ ↓ POST /api/collect
+CollectController (validates & queues)
+ ↓ Queue Job
+ProcessTrackingPayload (processes data)
+ ↓ Stores in DB
+Raw Tables (visitors, sessions, page_views, events)
+ ↓ Daily aggregation (02:00 AM)
+Aggregated Tables (daily_aggregates, page_daily_aggregates)
+ ↓ Used by
+Dashboard & Reports (hybrid: aggregates + real-time)
+```
+
+---
+
+## Installation
+
+### Development Setup
+
+```bash
+# Clone the repository
+cd /path/to/analytics
+
+# Install dependencies and setup
+composer setup
+
+# This runs:
+# - composer install
+# - Creates .env from .env.example
+# - php artisan key:generate
+# - php artisan migrate --force
+# - npm install
+# - npm run build
+
+# Start development environment (runs 4 processes)
+composer run dev
+```
+
+This starts:
+- Web server: `http://localhost:8000`
+- Queue worker (processes tracking data)
+- Log viewer (Pail)
+- Vite dev server (hot module reload)
+
+### Production Setup
+
+```bash
+# Install dependencies
+composer install --no-dev --optimize-autoloader
+
+# Generate application key
+php artisan key:generate
+
+# Run database migrations
+php artisan migrate --force
+
+# Build frontend assets
+npm ci
+npm run build
+
+# Set proper permissions
+chmod -R 755 storage bootstrap/cache
+chown -R www-data:www-data storage bootstrap/cache
+```
+
+---
+
+## Configuration
+
+### Environment Variables
+
+Copy `.env.example` to `.env` and configure:
+
+```env
+# Application
+APP_NAME="Analytics Platform"
+APP_ENV=production
+APP_DEBUG=false
+APP_URL=https://yourdomain.com
+
+# Database
+DB_CONNECTION=mysql
+DB_HOST=127.0.0.1
+DB_PORT=3306
+DB_DATABASE=analytics
+DB_USERNAME=your_user
+DB_PASSWORD=your_password
+
+# Queue (use 'redis' for better performance)
+QUEUE_CONNECTION=database
+
+# Mail (for alerts and notifications)
+MAIL_MAILER=smtp
+MAIL_HOST=smtp.mailtrap.io
+MAIL_PORT=2525
+MAIL_USERNAME=null
+MAIL_PASSWORD=null
+MAIL_FROM_ADDRESS=noreply@yourdomain.com
+MAIL_FROM_NAME="${APP_NAME}"
+
+# Cache (use 'redis' for better performance)
+CACHE_STORE=database
+
+# Session
+SESSION_DRIVER=database
+SESSION_LIFETIME=120
+```
+
+### Web Server Configuration
+
+#### For Standard Setup (public/ folder)
+Point your web server document root to the `public/` directory.
+
+#### For Shared Hosting (engine/ + public_html/)
+
+If your hosting has separate folders:
+- `engine/` - Laravel application files
+- `public_html/` - Public web root
+
+**Modify `public_html/index.php`:**
+
+```php
+usePublicPath(__DIR__);
+
+$app->handleRequest(Request::capture());
+```
+
+---
+
+## Required Background Tasks
+
+### 1. Queue Worker (CRITICAL)
+
+**Purpose**: Processes tracking data from websites
+
+Without this, tracking events are queued but never persisted to the database.
+
+```bash
+# Start queue worker
+php artisan queue:work database --tries=3 --timeout=60
+```
+
+**Production Setup**: Use a process supervisor
+
+**Using Supervisor** (recommended):
+
+```ini
+# /etc/supervisor/conf.d/analytics-queue.conf
+[program:analytics-queue]
+process_name=%(program_name)s_%(process_num)02d
+command=php /path/to/analytics/artisan queue:work database --tries=3 --timeout=60
+autostart=true
+autorestart=true
+stopasgroup=true
+killasgroup=true
+user=www-data
+numprocs=1
+redirect_stderr=true
+stdout_logfile=/path/to/analytics/storage/logs/queue-worker.log
+stopwaitsecs=3600
+```
+
+Then run:
+```bash
+sudo supervisorctl reread
+sudo supervisorctl update
+sudo supervisorctl start analytics-queue:*
+```
+
+**Using systemd**:
+
+```ini
+# /etc/systemd/system/analytics-queue.service
+[Unit]
+Description=Analytics Queue Worker
+After=network.target
+
+[Service]
+Type=simple
+User=www-data
+WorkingDirectory=/path/to/analytics
+ExecStart=/usr/bin/php /path/to/analytics/artisan queue:work database --tries=3 --timeout=60
+Restart=always
+RestartSec=5
+
+[Install]
+WantedBy=multi-user.target
+```
+
+Enable and start:
+```bash
+sudo systemctl enable analytics-queue
+sudo systemctl start analytics-queue
+```
+
+### 2. Task Scheduler (CRITICAL)
+
+**Purpose**: Runs scheduled tasks (aggregation, purging, alerts)
+
+Add to crontab:
+
+```bash
+# Edit crontab
+crontab -e
+
+# Add this line
+* * * * * cd /path/to/analytics && php artisan schedule:run >> /dev/null 2>&1
+```
+
+This executes:
+- **Daily at 02:00 AM**: `analytics:aggregate` - Rolls up data into daily aggregates
+- **Daily at 03:00 AM**: `analytics:purge --force` - Deletes old raw data
+- **Every hour**: `analytics:check-alerts` - Evaluates alerts and sends notifications
+
+Without the scheduler:
+- Reports will be slower (no aggregated data)
+- Old data will accumulate and bloat the database
+- Alerts will never trigger
+
+---
+
+## Tracking Setup
+
+### 1. Create a Website
+
+1. Register/login to the analytics platform
+2. Navigate to **Websites** → **Add Website**
+3. Enter website name and domain
+4. Copy the tracking ID (e.g., `abc123def456`)
+
+### 2. Install Tracking Script
+
+Add this script to your website's HTML (before ``):
+
+**Option 1: JavaScript Snippet**
+
+```html
+
+```
+
+**Option 2: Self-hosted Script**
+
+```html
+
+```
+
+**Option 3: No-JavaScript Fallback**
+
+```html
+
+```
+
+### 3. Track Custom Events
+
+```javascript
+// Track a custom event
+ta('event', 'button_click', {
+ category: 'engagement',
+ label: 'signup_button',
+ value: 1
+});
+
+// Track a purchase
+ta('event', 'purchase', {
+ category: 'ecommerce',
+ value: 99.99
+});
+```
+
+### 4. SPA Support
+
+For single-page applications (React, Vue, etc.), the tracker automatically detects route changes via `pushState` and `popstate`. You can also manually track page views:
+
+```javascript
+// Manual page view tracking
+ta('pageview');
+```
+
+---
+
+## How It Works
+
+### Tracking Process
+
+1. **Client-side**: Tracking script loads on visitor's browser
+2. **Collection**: Script sends tracking data to `/api/collect`
+3. **Validation**: `CollectController` validates tracking ID and domain
+4. **Queueing**: Tracking payload is queued as `ProcessTrackingPayload` job
+5. **Processing**: Queue worker picks up job and:
+ - Creates/updates **Visitor** record (with geolocation)
+ - Creates/retrieves **AnalyticsSession** (30-min timeout)
+ - Records **PageView** or **Event**
+ - Evaluates active **Goals** and records conversions
+ - Updates session metrics (duration, bounce status)
+6. **Aggregation**: Daily at 02:00 AM, raw data is rolled up into aggregates
+7. **Reporting**: Dashboard queries combine aggregated + real-time data
+
+### Session Logic
+
+- **Session Start**: First page view from a visitor
+- **Session Timeout**: 30 minutes of inactivity
+- **Session Duration**: Time between first and last page view
+- **Bounce**: Session with only 1 page view
+- **Exit Page**: Last page viewed in session
+
+### Goal Evaluation
+
+Goals are evaluated in real-time during tracking:
+
+1. **URL Destination**: Matches current page URL
+ - Exact: URL must match exactly
+ - Starts with: URL must start with pattern
+ - Contains: URL must contain pattern
+ - Regex: URL must match regex pattern
+
+2. **Event Match**: Matches event name (and optionally category)
+
+3. **Duration**: Session duration exceeds threshold
+
+4. **Pages Per Session**: Page count exceeds threshold
+
+### Data Aggregation
+
+Raw tracking data is aggregated daily to improve query performance:
+
+**Daily Aggregates** (per website, per day):
+- Total visitors (unique)
+- Total sessions
+- Total page views
+- Bounce count
+- Total session duration
+
+**Page Daily Aggregates** (per website, per page, per day):
+- Page views
+- Unique page views
+- Total time on page
+- Bounce count
+
+**Query Strategy**:
+- Historical dates: Query aggregated tables
+- Today: Query raw tables
+- Results are merged for complete picture
+
+---
+
+## Database Structure
+
+### Core Tables
+
+| Table | Description |
+|-------|-------------|
+| `users` | User accounts |
+| `websites` | Tracked websites with settings |
+| `visitors` | Unique visitors with device/location info |
+| `analytics_sessions` | User sessions with UTM data |
+| `page_views` | Individual page visits |
+| `events` | Custom events with metadata |
+| `goals` | Conversion goal definitions |
+| `goal_conversions` | Goal completion records |
+| `funnels` | Funnel definitions |
+| `segments` | Custom visitor segments |
+| `alerts` | Alert rule definitions |
+| `alert_notifications` | Triggered alert records |
+| `annotations` | Date annotations |
+| `dashboard_widgets` | Custom dashboard layouts |
+| `daily_aggregates` | Pre-computed daily metrics |
+| `page_daily_aggregates` | Per-page daily metrics |
+
+### Data Retention
+
+- **Raw Data**: Retained for 365 days (configurable per website)
+- **Aggregated Data**: Retained indefinitely
+- **Purge Schedule**: Daily at 03:00 AM via `analytics:purge`
+
+---
+
+## Artisan Commands
+
+### Analytics Commands
+
+#### 1. Aggregate Data
+```bash
+php artisan analytics:aggregate [options]
+
+Options:
+ --date=YYYY-MM-DD Aggregate specific date (default: yesterday)
+ --website=ID Aggregate specific website (default: all)
+
+# Examples
+php artisan analytics:aggregate
+php artisan analytics:aggregate --date=2026-03-20
+php artisan analytics:aggregate --website=1
+```
+
+**Important**: Cannot aggregate today's data (prevents incomplete aggregations)
+
+#### 2. Purge Old Data
+```bash
+php artisan analytics:purge [options]
+
+Options:
+ --website=ID Purge specific website (default: all)
+ --force Skip confirmation prompt
+
+# Examples
+php artisan analytics:purge --force
+php artisan analytics:purge --website=1
+```
+
+Deletes raw data older than retention period (default: 365 days).
+
+#### 3. Check Alerts
+```bash
+php artisan analytics:check-alerts
+```
+
+Evaluates all active alerts and triggers notifications.
+
+### Queue Commands
+
+```bash
+# Process queue jobs
+php artisan queue:work database --tries=3
+
+# List failed jobs
+php artisan queue:failed
+
+# Retry failed job
+php artisan queue:retry {job-id}
+
+# Retry all failed jobs
+php artisan queue:retry all
+
+# Flush failed jobs
+php artisan queue:flush
+```
+
+### Cache Commands
+
+```bash
+# Clear application cache
+php artisan cache:clear
+
+# Clear config cache
+php artisan config:clear
+
+# Clear route cache
+php artisan route:clear
+
+# Clear view cache
+php artisan view:clear
+
+# Cache config for production
+php artisan config:cache
+php artisan route:cache
+php artisan view:cache
+```
+
+---
+
+## API Documentation
+
+### Authentication
+
+Generate API token in dashboard: **Profile** → **API Tokens** → **Create Token**
+
+Include in requests:
+```bash
+Authorization: Bearer YOUR_API_TOKEN
+```
+
+### Endpoints
+
+#### GET /api/v1/websites
+List all websites
+
+```bash
+curl -H "Authorization: Bearer YOUR_TOKEN" \
+ https://analytics.yourdomain.com/api/v1/websites
+```
+
+#### GET /api/v1/websites/{id}/stats
+Get website statistics
+
+```bash
+curl -H "Authorization: Bearer YOUR_TOKEN" \
+ "https://analytics.yourdomain.com/api/v1/websites/1/stats?from=2026-03-01&to=2026-03-22"
+```
+
+Query Parameters:
+- `from` (required): Start date (YYYY-MM-DD)
+- `to` (required): End date (YYYY-MM-DD)
+
+#### GET /api/v1/websites/{id}/pages
+Get page analytics
+
+```bash
+curl -H "Authorization: Bearer YOUR_TOKEN" \
+ "https://analytics.yourdomain.com/api/v1/websites/1/pages?from=2026-03-01&to=2026-03-22&limit=20"
+```
+
+#### GET /api/v1/websites/{id}/referrers
+Get referrer data
+
+#### GET /api/v1/websites/{id}/events
+Get event data
+
+#### GET /api/v1/websites/{id}/visitors
+Get visitor data
+
+---
+
+## Maintenance
+
+### Daily Tasks (Automated)
+
+These run automatically via cron (see [Task Scheduler](#2-task-scheduler-critical)):
+
+- **02:00 AM**: Data aggregation
+- **03:00 AM**: Old data purging
+- **Every hour**: Alert evaluation
+
+### Weekly Tasks (Manual)
+
+#### Check Queue Status
+```bash
+# Check if queue worker is running
+ps aux | grep "queue:work"
+
+# Check failed jobs
+php artisan queue:failed
+
+# Retry failed jobs
+php artisan queue:retry all
+```
+
+#### Monitor Disk Space
+```bash
+# Check database size
+du -h database/database.sqlite
+
+# Check storage usage
+du -sh storage/
+```
+
+#### Review Logs
+```bash
+# Check application logs
+tail -f storage/logs/laravel.log
+
+# Check queue worker logs (if using supervisor)
+tail -f storage/logs/queue-worker.log
+```
+
+### Monthly Tasks
+
+#### Database Optimization
+
+**SQLite**:
+```bash
+sqlite3 database/database.sqlite "VACUUM;"
+```
+
+**MySQL**:
+```sql
+OPTIMIZE TABLE visitors, analytics_sessions, page_views, events, daily_aggregates, page_daily_aggregates;
+```
+
+#### Review Data Retention
+
+Check if retention settings are appropriate:
+1. Navigate to **Website Settings**
+2. Review **Data Retention** setting (default: 365 days)
+3. Adjust based on compliance requirements
+
+### Backup Strategy
+
+#### Database Backup
+
+**SQLite**:
+```bash
+# Copy database file
+cp database/database.sqlite backups/database-$(date +%Y%m%d).sqlite
+
+# Compress
+gzip backups/database-$(date +%Y%m%d).sqlite
+```
+
+**MySQL**:
+```bash
+mysqldump -u user -p analytics > backups/analytics-$(date +%Y%m%d).sql
+gzip backups/analytics-$(date +%Y%m%d).sql
+```
+
+#### Application Backup
+```bash
+# Backup entire application
+tar -czf analytics-backup-$(date +%Y%m%d).tar.gz \
+ --exclude=node_modules \
+ --exclude=vendor \
+ --exclude=storage/logs \
+ /path/to/analytics
+```
+
+### Troubleshooting
+
+#### Tracking Not Working
+
+1. **Check queue worker is running**:
+ ```bash
+ ps aux | grep "queue:work"
+ ```
+
+2. **Check failed jobs**:
+ ```bash
+ php artisan queue:failed
+ ```
+
+3. **Check tracking domain matches**:
+ - Ensure website domain in dashboard matches actual domain
+ - Domain validation is case-insensitive but must match
+
+4. **Check browser console**:
+ - Look for CORS errors
+ - Verify tracking script loads
+
+5. **Check logs**:
+ ```bash
+ tail -f storage/logs/laravel.log
+ ```
+
+#### Dashboard Shows No Data
+
+1. **Check if aggregation ran**:
+ ```bash
+ php artisan analytics:aggregate --date=yesterday
+ ```
+
+2. **Check date range** - today's data may not appear if only querying aggregates
+
+3. **Verify tracking is working** - check raw tables:
+ ```sql
+ SELECT COUNT(*) FROM page_views WHERE created_at > datetime('now', '-1 hour');
+ ```
+
+#### Alerts Not Triggering
+
+1. **Check cron is running**:
+ ```bash
+ grep CRON /var/log/syslog
+ ```
+
+2. **Manually run alert check**:
+ ```bash
+ php artisan analytics:check-alerts
+ ```
+
+3. **Check mail configuration**:
+ ```bash
+ php artisan tinker
+ >>> Mail::raw('Test', function($msg) { $msg->to('test@example.com')->subject('Test'); });
+ ```
+
+#### High Disk Usage
+
+1. **Run aggregation** (if not running):
+ ```bash
+ php artisan analytics:aggregate
+ ```
+
+2. **Purge old data**:
+ ```bash
+ php artisan analytics:purge --force
+ ```
+
+3. **Adjust retention settings** in website configuration
+
+---
+
+## Performance Optimization
+
+### 1. Use Redis for Queue & Cache
+
+```env
+QUEUE_CONNECTION=redis
+CACHE_STORE=redis
+SESSION_DRIVER=redis
+
+REDIS_HOST=127.0.0.1
+REDIS_PASSWORD=null
+REDIS_PORT=6379
+```
+
+### 2. Database Indexing
+
+Ensure migrations have run (indexes are included):
+```bash
+php artisan migrate
+```
+
+### 3. Cache Configuration
+
+In production:
+```bash
+php artisan config:cache
+php artisan route:cache
+php artisan view:cache
+```
+
+### 4. Enable OPcache
+
+Add to `php.ini`:
+```ini
+opcache.enable=1
+opcache.memory_consumption=256
+opcache.interned_strings_buffer=16
+opcache.max_accelerated_files=10000
+opcache.revalidate_freq=2
+```
+
+### 5. Queue Workers
+
+Run multiple queue workers for high traffic:
+```bash
+# Run 3 workers
+php artisan queue:work database --tries=3 &
+php artisan queue:work database --tries=3 &
+php artisan queue:work database --tries=3 &
+```
+
+Or use supervisor with `numprocs=3`.
+
+---
+
+## Security Considerations
+
+### 1. Environment File
+- Never commit `.env` to version control
+- Use strong `APP_KEY` (generated automatically)
+- Set `APP_DEBUG=false` in production
+
+### 2. Database Credentials
+- Use strong passwords
+- Restrict database user permissions
+- Use separate database user for application
+
+### 3. HTTPS
+- Always use HTTPS in production
+- Update `APP_URL` to use `https://`
+- Tracking script requires HTTPS for secure cookies
+
+### 4. CORS
+- CORS is enabled for `/api/collect` and `/api/t/{id}.js`
+- Only these endpoints are publicly accessible
+- Dashboard requires authentication
+
+### 5. Rate Limiting
+- Tracking endpoints have rate limiting
+- API endpoints have Sanctum rate limiting
+- Adjust in `app/Http/Middleware` if needed
+
+---
+
+## Support & Resources
+
+### Documentation
+- Laravel 11: https://laravel.com/docs/11.x
+- Alpine.js: https://alpinejs.dev
+- Tailwind CSS: https://tailwindcss.com
+
+### Logs
+- Application: `storage/logs/laravel.log`
+- Queue Worker: Check supervisor/systemd logs
+
+### Common Paths
+- **Application**: `/path/to/analytics`
+- **Public**: `/path/to/analytics/public`
+- **Storage**: `/path/to/analytics/storage`
+- **Database**: `/path/to/analytics/database/database.sqlite`
+- **Logs**: `/path/to/analytics/storage/logs/`
+
+---
+
+## Quick Reference
+
+### Essential Commands
+
+```bash
+# Development
+composer run dev # Start dev environment
+
+# Queue
+php artisan queue:work database # Start queue worker
+php artisan queue:failed # List failed jobs
+php artisan queue:retry all # Retry failed jobs
+
+# Analytics
+php artisan analytics:aggregate # Aggregate yesterday's data
+php artisan analytics:purge --force # Purge old data
+php artisan analytics:check-alerts # Check alerts
+
+# Cache
+php artisan cache:clear # Clear cache
+php artisan config:cache # Cache config (production)
+
+# Maintenance
+php artisan down # Enable maintenance mode
+php artisan up # Disable maintenance mode
+```
+
+### Cron Entry
+
+```cron
+* * * * * cd /path/to/analytics && php artisan schedule:run >> /dev/null 2>&1
+```
+
+### Supervisor Config
+
+```ini
+[program:analytics-queue]
+command=php /path/to/analytics/artisan queue:work database --tries=3
+autostart=true
+autorestart=true
+user=www-data
+```
+
+---
+
+**Last Updated**: 2026-03-22
+**Laravel Version**: 11.50.0
+**PHP Version**: 8.2+ (Compatible with 8.3)
diff --git a/composer.json b/composer.json
index 16ad9b1..df9b256 100644
--- a/composer.json
+++ b/composer.json
@@ -9,21 +9,30 @@
"php": "^8.2",
"jaybizzle/crawler-detect": "^1.3",
"laravel/fortify": "^1.36",
- "laravel/framework": "^12.0",
- "laravel/sanctum": "^4.3",
- "laravel/tinker": "^2.10.1",
- "stevebauman/location": "^7.6"
+ "laravel/framework": "^11.0",
+ "laravel/sanctum": "^4.0",
+ "laravel/tinker": "^2.9",
+ "stevebauman/location": "^7.6",
+ "symfony/clock": "^7.0",
+ "symfony/console": "^7.0",
+ "symfony/css-selector": "^7.0",
+ "symfony/event-dispatcher": "^7.0",
+ "symfony/http-foundation": "^7.0",
+ "symfony/http-kernel": "^7.0",
+ "symfony/string": "^7.0",
+ "symfony/translation": "^7.0",
+ "symfony/yaml": "^7.0"
},
"require-dev": {
"fakerphp/faker": "^1.23",
- "larastan/larastan": "^3.9",
- "laravel/breeze": "^2.4",
- "laravel/pail": "^1.2.2",
- "laravel/pint": "^1.24",
- "laravel/sail": "^1.41",
+ "larastan/larastan": "^2.9",
+ "laravel/breeze": "^2.0",
+ "laravel/pail": "1.1",
+ "laravel/pint": "^1.13",
+ "laravel/sail": "^1.26",
"mockery/mockery": "^1.6",
- "nunomaduro/collision": "^8.6",
- "phpunit/phpunit": "^11.5.50"
+ "nunomaduro/collision": "^8.0",
+ "phpunit/phpunit": "^10.5"
},
"autoload": {
"psr-4": {
@@ -75,7 +84,10 @@
},
"extra": {
"laravel": {
- "dont-discover": []
+ "dont-discover": [
+ "laravel/pail",
+ "laravel/sail"
+ ]
}
},
"config": {
diff --git a/composer.lock b/composer.lock
index 7faf959..2dc5bfd 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "d00d52ebd78c3db0e6046725a4b740d7",
+ "content-hash": "7b2a4aa5ac3b33c5d80b2316c9af22b6",
"packages": [
{
"name": "bacon/bacon-qr-code",
@@ -1405,20 +1405,20 @@
},
{
"name": "laravel/framework",
- "version": "v12.54.1",
+ "version": "v11.50.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
- "reference": "325497463e7599cd14224c422c6e5dd2fe832868"
+ "reference": "c761f591209b45f56c1317ecbff0b04c89cf7ba2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/325497463e7599cd14224c422c6e5dd2fe832868",
- "reference": "325497463e7599cd14224c422c6e5dd2fe832868",
+ "url": "https://api.github.com/repos/laravel/framework/zipball/c761f591209b45f56c1317ecbff0b04c89cf7ba2",
+ "reference": "c761f591209b45f56c1317ecbff0b04c89cf7ba2",
"shasum": ""
},
"require": {
- "brick/math": "^0.11|^0.12|^0.13|^0.14",
+ "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12|^0.13|^0.14",
"composer-runtime-api": "^2.2",
"doctrine/inflector": "^2.0.5",
"dragonmantank/cron-expression": "^3.4",
@@ -1433,34 +1433,32 @@
"fruitcake/php-cors": "^1.3",
"guzzlehttp/guzzle": "^7.8.2",
"guzzlehttp/uri-template": "^1.0",
- "laravel/prompts": "^0.3.0",
+ "laravel/prompts": "^0.1.18|^0.2.0|^0.3.0",
"laravel/serializable-closure": "^1.3|^2.0",
- "league/commonmark": "^2.8.1",
+ "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",
+ "nesbot/carbon": "^2.72.6|^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/console": "^7.0.3",
+ "symfony/error-handler": "^7.0.3",
+ "symfony/finder": "^7.0.3",
"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",
+ "symfony/http-kernel": "^7.0.3",
+ "symfony/mailer": "^7.0.3",
+ "symfony/mime": "^7.0.3",
+ "symfony/polyfill-php83": "^1.31",
+ "symfony/process": "^7.0.3",
+ "symfony/routing": "^7.0.3",
+ "symfony/uid": "^7.0.3",
+ "symfony/var-dumper": "^7.0.3",
"tijsverkoyen/css-to-inline-styles": "^2.2.5",
"vlucas/phpdotenv": "^5.6.1",
"voku/portable-ascii": "^2.0.2"
@@ -1492,7 +1490,6 @@
"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",
@@ -1502,7 +1499,6 @@
"illuminate/process": "self.version",
"illuminate/queue": "self.version",
"illuminate/redis": "self.version",
- "illuminate/reflection": "self.version",
"illuminate/routing": "self.version",
"illuminate/session": "self.version",
"illuminate/support": "self.version",
@@ -1526,18 +1522,17 @@
"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.9.0",
- "pda/pheanstalk": "^5.0.6|^7.0.0",
+ "orchestra/testbench-core": "^9.18.0",
+ "pda/pheanstalk": "^5.0.6",
"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"
+ "phpstan/phpstan": "2.1.41",
+ "phpunit/phpunit": "^10.5.35|^11.3.6|^12.0.1",
+ "predis/predis": "^2.3",
+ "resend/resend-php": "^0.10.0",
+ "symfony/cache": "^7.0.3",
+ "symfony/http-client": "^7.0.3",
+ "symfony/psr-http-message-bridge": "^7.0.3",
+ "symfony/translation": "^7.0.3"
},
"suggest": {
"ably/ably-php": "Required to use the Ably broadcast driver (^1.0).",
@@ -1552,7 +1547,7 @@
"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).",
+ "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).",
"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).",
@@ -1563,22 +1558,22 @@
"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).",
+ "phpunit/phpunit": "Required to use assertions and run tests (^10.5.35|^11.3.6|^12.0.1).",
+ "predis/predis": "Required to use the predis connector (^2.3).",
"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)."
+ "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).",
+ "symfony/cache": "Required to PSR-6 cache bridge (^7.0).",
+ "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).",
+ "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).",
+ "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).",
+ "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).",
+ "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)."
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "12.x-dev"
+ "dev-master": "11.x-dev"
}
},
"autoload": {
@@ -1589,7 +1584,6 @@
"src/Illuminate/Filesystem/functions.php",
"src/Illuminate/Foundation/helpers.php",
"src/Illuminate/Log/functions.php",
- "src/Illuminate/Reflection/helpers.php",
"src/Illuminate/Support/functions.php",
"src/Illuminate/Support/helpers.php"
],
@@ -1598,8 +1592,7 @@
"Illuminate\\Support\\": [
"src/Illuminate/Macroable/",
"src/Illuminate/Collections/",
- "src/Illuminate/Conditionable/",
- "src/Illuminate/Reflection/"
+ "src/Illuminate/Conditionable/"
]
}
},
@@ -1623,20 +1616,20 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
- "time": "2026-03-10T20:25:56+00:00"
+ "time": "2026-03-17T19:35:22+00:00"
},
{
"name": "laravel/prompts",
- "version": "v0.3.14",
+ "version": "v0.3.15",
"source": {
"type": "git",
"url": "https://github.com/laravel/prompts.git",
- "reference": "9f0e371244eedfe2ebeaa72c79c54bb5df6e0176"
+ "reference": "4bb8107ec97651fd3f17f897d6489dbc4d8fb999"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/prompts/zipball/9f0e371244eedfe2ebeaa72c79c54bb5df6e0176",
- "reference": "9f0e371244eedfe2ebeaa72c79c54bb5df6e0176",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/4bb8107ec97651fd3f17f897d6489dbc4d8fb999",
+ "reference": "4bb8107ec97651fd3f17f897d6489dbc4d8fb999",
"shasum": ""
},
"require": {
@@ -1680,9 +1673,9 @@
"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.14"
+ "source": "https://github.com/laravel/prompts/tree/v0.3.15"
},
- "time": "2026-03-01T09:02:38+00:00"
+ "time": "2026-03-17T13:45:17+00:00"
},
{
"name": "laravel/sanctum",
@@ -1876,16 +1869,16 @@
},
{
"name": "league/commonmark",
- "version": "2.8.1",
+ "version": "2.8.2",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
- "reference": "84b1ca48347efdbe775426f108622a42735a6579"
+ "reference": "59fb075d2101740c337c7216e3f32b36c204218b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/84b1ca48347efdbe775426f108622a42735a6579",
- "reference": "84b1ca48347efdbe775426f108622a42735a6579",
+ "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/59fb075d2101740c337c7216e3f32b36c204218b",
+ "reference": "59fb075d2101740c337c7216e3f32b36c204218b",
"shasum": ""
},
"require": {
@@ -1979,7 +1972,7 @@
"type": "tidelift"
}
],
- "time": "2026-03-05T21:37:03+00:00"
+ "time": "2026-03-19T13:16:38+00:00"
},
{
"name": "league/config",
@@ -3946,16 +3939,16 @@
},
{
"name": "stevebauman/location",
- "version": "v7.6.2",
+ "version": "v7.6.3",
"source": {
"type": "git",
"url": "https://github.com/stevebauman/location.git",
- "reference": "2f7686b685b924f193d6a6b82074861b8cc5aa3a"
+ "reference": "ed76d047c40dc13646438e486a8981102476adbe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/stevebauman/location/zipball/2f7686b685b924f193d6a6b82074861b8cc5aa3a",
- "reference": "2f7686b685b924f193d6a6b82074861b8cc5aa3a",
+ "url": "https://api.github.com/repos/stevebauman/location/zipball/ed76d047c40dc13646438e486a8981102476adbe",
+ "reference": "ed76d047c40dc13646438e486a8981102476adbe",
"shasum": ""
},
"require": {
@@ -3963,12 +3956,12 @@
"ext-json": "*",
"geoip2/geoip2": "^2.0|^3.0",
"guzzlehttp/guzzle": "^7.0",
- "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0",
+ "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0",
"php": ">=8.1"
},
"require-dev": {
"mockery/mockery": "^1.0",
- "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0",
+ "orchestra/testbench": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0",
"pestphp/pest": "^1.0|^2.0|^3.7"
},
"type": "library",
@@ -4009,27 +4002,28 @@
],
"support": {
"issues": "https://github.com/stevebauman/location/issues",
- "source": "https://github.com/stevebauman/location/tree/v7.6.2"
+ "source": "https://github.com/stevebauman/location/tree/v7.6.3"
},
- "time": "2026-02-11T16:06:17+00:00"
+ "time": "2026-03-18T16:51:48+00:00"
},
{
"name": "symfony/clock",
- "version": "v8.0.0",
+ "version": "v7.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/clock.git",
- "reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f"
+ "reference": "9169f24776edde469914c1e7a1442a50f7a4e110"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/clock/zipball/832119f9b8dbc6c8e6f65f30c5969eca1e88764f",
- "reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f",
+ "url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110",
+ "reference": "9169f24776edde469914c1e7a1442a50f7a4e110",
"shasum": ""
},
"require": {
- "php": ">=8.4",
- "psr/clock": "^1.0"
+ "php": ">=8.2",
+ "psr/clock": "^1.0",
+ "symfony/polyfill-php83": "^1.28"
},
"provide": {
"psr/clock-implementation": "1.0"
@@ -4068,7 +4062,7 @@
"time"
],
"support": {
- "source": "https://github.com/symfony/clock/tree/v8.0.0"
+ "source": "https://github.com/symfony/clock/tree/v7.4.0"
},
"funding": [
{
@@ -4088,7 +4082,7 @@
"type": "tidelift"
}
],
- "time": "2025-11-12T15:46:48+00:00"
+ "time": "2025-11-12T15:39:26+00:00"
},
{
"name": "symfony/console",
@@ -4190,20 +4184,20 @@
},
{
"name": "symfony/css-selector",
- "version": "v8.0.6",
+ "version": "v7.4.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "2a178bf80f05dbbe469a337730eba79d61315262"
+ "reference": "2e7c52c647b406e2107dd867db424a4dbac91864"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/2a178bf80f05dbbe469a337730eba79d61315262",
- "reference": "2a178bf80f05dbbe469a337730eba79d61315262",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/2e7c52c647b406e2107dd867db424a4dbac91864",
+ "reference": "2e7c52c647b406e2107dd867db424a4dbac91864",
"shasum": ""
},
"require": {
- "php": ">=8.4"
+ "php": ">=8.2"
},
"type": "library",
"autoload": {
@@ -4235,7 +4229,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v8.0.6"
+ "source": "https://github.com/symfony/css-selector/tree/v7.4.6"
},
"funding": [
{
@@ -4255,7 +4249,7 @@
"type": "tidelift"
}
],
- "time": "2026-02-17T13:07:04+00:00"
+ "time": "2026-02-17T07:53:42+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -4408,24 +4402,24 @@
},
{
"name": "symfony/event-dispatcher",
- "version": "v8.0.4",
+ "version": "v7.4.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "99301401da182b6cfaa4700dbe9987bb75474b47"
+ "reference": "dc2c0eba1af673e736bb851d747d266108aea746"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/99301401da182b6cfaa4700dbe9987bb75474b47",
- "reference": "99301401da182b6cfaa4700dbe9987bb75474b47",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dc2c0eba1af673e736bb851d747d266108aea746",
+ "reference": "dc2c0eba1af673e736bb851d747d266108aea746",
"shasum": ""
},
"require": {
- "php": ">=8.4",
+ "php": ">=8.2",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
- "symfony/security-http": "<7.4",
+ "symfony/dependency-injection": "<6.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
@@ -4434,14 +4428,14 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^7.4|^8.0",
- "symfony/dependency-injection": "^7.4|^8.0",
- "symfony/error-handler": "^7.4|^8.0",
- "symfony/expression-language": "^7.4|^8.0",
- "symfony/framework-bundle": "^7.4|^8.0",
- "symfony/http-foundation": "^7.4|^8.0",
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/error-handler": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/framework-bundle": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^6.4|^7.0|^8.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/stopwatch": "^7.4|^8.0"
+ "symfony/stopwatch": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -4469,7 +4463,7 @@
"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/v8.0.4"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.4"
},
"funding": [
{
@@ -4489,7 +4483,7 @@
"type": "tidelift"
}
],
- "time": "2026-01-05T11:45:55+00:00"
+ "time": "2026-01-05T11:45:34+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
@@ -5595,86 +5589,6 @@
],
"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",
@@ -6077,34 +5991,35 @@
},
{
"name": "symfony/string",
- "version": "v8.0.6",
+ "version": "v7.4.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "6c9e1108041b5dce21a9a4984b531c4923aa9ec4"
+ "reference": "9f209231affa85aa930a5e46e6eb03381424b30b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/6c9e1108041b5dce21a9a4984b531c4923aa9ec4",
- "reference": "6c9e1108041b5dce21a9a4984b531c4923aa9ec4",
+ "url": "https://api.github.com/repos/symfony/string/zipball/9f209231affa85aa930a5e46e6eb03381424b30b",
+ "reference": "9f209231affa85aa930a5e46e6eb03381424b30b",
"shasum": ""
},
"require": {
- "php": ">=8.4",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-intl-grapheme": "^1.33",
- "symfony/polyfill-intl-normalizer": "^1.0",
- "symfony/polyfill-mbstring": "^1.0"
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3.0",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.33",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/emoji": "^7.4|^8.0",
- "symfony/http-client": "^7.4|^8.0",
- "symfony/intl": "^7.4|^8.0",
+ "symfony/emoji": "^7.1|^8.0",
+ "symfony/http-client": "^6.4|^7.0|^8.0",
+ "symfony/intl": "^6.4|^7.0|^8.0",
"symfony/translation-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^7.4|^8.0"
+ "symfony/var-exporter": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -6143,7 +6058,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v8.0.6"
+ "source": "https://github.com/symfony/string/tree/v7.4.6"
},
"funding": [
{
@@ -6163,31 +6078,38 @@
"type": "tidelift"
}
],
- "time": "2026-02-09T10:14:57+00:00"
+ "time": "2026-02-09T09:33:46+00:00"
},
{
"name": "symfony/translation",
- "version": "v8.0.6",
+ "version": "v7.4.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "13ff19bcf2bea492d3c2fbeaa194dd6f4599ce1b"
+ "reference": "1888cf064399868af3784b9e043240f1d89d25ce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/13ff19bcf2bea492d3c2fbeaa194dd6f4599ce1b",
- "reference": "13ff19bcf2bea492d3c2fbeaa194dd6f4599ce1b",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/1888cf064399868af3784b9e043240f1d89d25ce",
+ "reference": "1888cf064399868af3784b9e043240f1d89d25ce",
"shasum": ""
},
"require": {
- "php": ">=8.4",
- "symfony/polyfill-mbstring": "^1.0",
- "symfony/translation-contracts": "^3.6.1"
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/translation-contracts": "^2.5.3|^3.3"
},
"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/service-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"
@@ -6195,17 +6117,17 @@
"require-dev": {
"nikic/php-parser": "^5.0",
"psr/log": "^1|^2|^3",
- "symfony/config": "^7.4|^8.0",
- "symfony/console": "^7.4|^8.0",
- "symfony/dependency-injection": "^7.4|^8.0",
- "symfony/finder": "^7.4|^8.0",
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/console": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/finder": "^6.4|^7.0|^8.0",
"symfony/http-client-contracts": "^2.5|^3.0",
- "symfony/http-kernel": "^7.4|^8.0",
- "symfony/intl": "^7.4|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/intl": "^6.4|^7.0|^8.0",
"symfony/polyfill-intl-icu": "^1.21",
- "symfony/routing": "^7.4|^8.0",
+ "symfony/routing": "^6.4|^7.0|^8.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/yaml": "^7.4|^8.0"
+ "symfony/yaml": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -6236,7 +6158,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v8.0.6"
+ "source": "https://github.com/symfony/translation/tree/v7.4.6"
},
"funding": [
{
@@ -6256,7 +6178,7 @@
"type": "tidelift"
}
],
- "time": "2026-02-17T13:07:04+00:00"
+ "time": "2026-02-17T07:53:42+00:00"
},
{
"name": "symfony/translation-contracts",
@@ -6505,6 +6427,82 @@
],
"time": "2026-02-15T10:53:20+00:00"
},
+ {
+ "name": "symfony/yaml",
+ "version": "v7.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "58751048de17bae71c5aa0d13cb19d79bca26391"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/58751048de17bae71c5aa0d13cb19d79bca26391",
+ "reference": "58751048de17bae71c5aa0d13cb19d79bca26391",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "symfony/console": "<6.4"
+ },
+ "require-dev": {
+ "symfony/console": "^6.4|^7.0|^8.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.4.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": "2026-02-09T09:33:46+00:00"
+ },
{
"name": "tijsverkoyen/css-to-inline-styles",
"version": "v2.4.0",
@@ -6907,16 +6905,16 @@
},
{
"name": "iamcal/sql-parser",
- "version": "v0.7",
+ "version": "v0.5",
"source": {
"type": "git",
"url": "https://github.com/iamcal/SQLParser.git",
- "reference": "610392f38de49a44dab08dc1659960a29874c4b8"
+ "reference": "644fd994de3b54e5d833aecf406150aa3b66ca88"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/610392f38de49a44dab08dc1659960a29874c4b8",
- "reference": "610392f38de49a44dab08dc1659960a29874c4b8",
+ "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/644fd994de3b54e5d833aecf406150aa3b66ca88",
+ "reference": "644fd994de3b54e5d833aecf406150aa3b66ca88",
"shasum": ""
},
"require-dev": {
@@ -6942,50 +6940,49 @@
"description": "MySQL schema parser",
"support": {
"issues": "https://github.com/iamcal/SQLParser/issues",
- "source": "https://github.com/iamcal/SQLParser/tree/v0.7"
+ "source": "https://github.com/iamcal/SQLParser/tree/v0.5"
},
- "time": "2026-01-28T22:20:33+00:00"
+ "time": "2024-03-22T22:46:32+00:00"
},
{
"name": "larastan/larastan",
- "version": "v3.9.3",
+ "version": "v2.11.2",
"source": {
"type": "git",
"url": "https://github.com/larastan/larastan.git",
- "reference": "64a52bcc5347c89fdf131cb59f96ebfbc8d1ad65"
+ "reference": "1aae902a5851c03dc1a58cbd9010a0c3ef8def63"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/larastan/larastan/zipball/64a52bcc5347c89fdf131cb59f96ebfbc8d1ad65",
- "reference": "64a52bcc5347c89fdf131cb59f96ebfbc8d1ad65",
+ "url": "https://api.github.com/repos/larastan/larastan/zipball/1aae902a5851c03dc1a58cbd9010a0c3ef8def63",
+ "reference": "1aae902a5851c03dc1a58cbd9010a0c3ef8def63",
"shasum": ""
},
"require": {
"ext-json": "*",
- "iamcal/sql-parser": "^0.7.0",
- "illuminate/console": "^11.44.2 || ^12.4.1 || ^13",
- "illuminate/container": "^11.44.2 || ^12.4.1 || ^13",
- "illuminate/contracts": "^11.44.2 || ^12.4.1 || ^13",
- "illuminate/database": "^11.44.2 || ^12.4.1 || ^13",
- "illuminate/http": "^11.44.2 || ^12.4.1 || ^13",
- "illuminate/pipeline": "^11.44.2 || ^12.4.1 || ^13",
- "illuminate/support": "^11.44.2 || ^12.4.1 || ^13",
- "php": "^8.2",
- "phpstan/phpstan": "^2.1.32"
+ "iamcal/sql-parser": "^0.5.0",
+ "illuminate/console": "^9.52.20 || ^10.48.28 || ^11.41.3",
+ "illuminate/container": "^9.52.20 || ^10.48.28 || ^11.41.3",
+ "illuminate/contracts": "^9.52.20 || ^10.48.28 || ^11.41.3",
+ "illuminate/database": "^9.52.20 || ^10.48.28 || ^11.41.3",
+ "illuminate/http": "^9.52.20 || ^10.48.28 || ^11.41.3",
+ "illuminate/pipeline": "^9.52.20 || ^10.48.28 || ^11.41.3",
+ "illuminate/support": "^9.52.20 || ^10.48.28 || ^11.41.3",
+ "php": "^8.0.2",
+ "phpstan/phpstan": "^1.12.17"
},
"require-dev": {
"doctrine/coding-standard": "^13",
- "laravel/framework": "^11.44.2 || ^12.7.2 || ^13",
- "mockery/mockery": "^1.6.12",
- "nikic/php-parser": "^5.4",
- "orchestra/canvas": "^v9.2.2 || ^10.0.1 || ^11",
- "orchestra/testbench-core": "^9.12.0 || ^10.1 || ^11",
- "phpstan/phpstan-deprecation-rules": "^2.0.1",
- "phpunit/phpunit": "^10.5.35 || ^11.5.15 || ^12.5.8"
+ "laravel/framework": "^9.52.20 || ^10.48.28 || ^11.41.3",
+ "mockery/mockery": "^1.5.1",
+ "nikic/php-parser": "^4.19.1",
+ "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.2",
+ "orchestra/testbench-core": "^7.33.0 || ^8.13.0 || ^9.0.9",
+ "phpstan/phpstan-deprecation-rules": "^1.2",
+ "phpunit/phpunit": "^9.6.13 || ^10.5.16"
},
"suggest": {
- "orchestra/testbench": "Using Larastan for analysing a package needs Testbench",
- "phpmyadmin/sql-parser": "Install to enable Larastan's optional phpMyAdmin-based SQL parser automatically"
+ "orchestra/testbench": "Using Larastan for analysing a package needs Testbench"
},
"type": "phpstan-extension",
"extra": {
@@ -6995,7 +6992,7 @@
]
},
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "2.0-dev"
}
},
"autoload": {
@@ -7026,7 +7023,7 @@
],
"support": {
"issues": "https://github.com/larastan/larastan/issues",
- "source": "https://github.com/larastan/larastan/tree/v3.9.3"
+ "source": "https://github.com/larastan/larastan/tree/v2.11.2"
},
"funding": [
{
@@ -7034,7 +7031,7 @@
"type": "github"
}
],
- "time": "2026-02-20T12:07:12+00:00"
+ "time": "2025-06-10T22:06:33+00:00"
},
{
"name": "laravel/breeze",
@@ -7099,38 +7096,36 @@
},
{
"name": "laravel/pail",
- "version": "v1.2.6",
+ "version": "v1.1.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/pail.git",
- "reference": "aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf"
+ "reference": "045c708219282c65e0b726f9cbf79ea9daa5e70d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/pail/zipball/aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf",
- "reference": "aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf",
+ "url": "https://api.github.com/repos/laravel/pail/zipball/045c708219282c65e0b726f9cbf79ea9daa5e70d",
+ "reference": "045c708219282c65e0b726f9cbf79ea9daa5e70d",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
- "illuminate/console": "^10.24|^11.0|^12.0|^13.0",
- "illuminate/contracts": "^10.24|^11.0|^12.0|^13.0",
- "illuminate/log": "^10.24|^11.0|^12.0|^13.0",
- "illuminate/process": "^10.24|^11.0|^12.0|^13.0",
- "illuminate/support": "^10.24|^11.0|^12.0|^13.0",
+ "ext-pcntl": "*",
+ "illuminate/console": "^10.24|^11.0",
+ "illuminate/contracts": "^10.24|^11.0",
+ "illuminate/log": "^10.24|^11.0",
+ "illuminate/process": "^10.24|^11.0",
+ "illuminate/support": "^10.24|^11.0",
"nunomaduro/termwind": "^1.15|^2.0",
- "php": "^8.2",
- "symfony/console": "^6.0|^7.0|^8.0"
+ "php": "^8.2"
},
"require-dev": {
- "laravel/framework": "^10.24|^11.0|^12.0|^13.0",
"laravel/pint": "^1.13",
- "orchestra/testbench-core": "^8.13|^9.17|^10.8|^11.0",
- "pestphp/pest": "^2.20|^3.0|^4.0",
- "pestphp/pest-plugin-type-coverage": "^2.3|^3.0|^4.0",
- "phpstan/phpstan": "^1.12.27",
- "symfony/var-dumper": "^6.3|^7.0|^8.0",
- "symfony/yaml": "^6.3|^7.0|^8.0"
+ "orchestra/testbench": "^8.12|^9.0",
+ "pestphp/pest": "^2.20",
+ "pestphp/pest-plugin-type-coverage": "^2.3",
+ "phpstan/phpstan": "^1.10",
+ "symfony/var-dumper": "^6.3|^7.0"
},
"type": "library",
"extra": {
@@ -7165,7 +7160,6 @@
"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",
@@ -7175,7 +7169,7 @@
"issues": "https://github.com/laravel/pail/issues",
"source": "https://github.com/laravel/pail"
},
- "time": "2026-02-09T13:44:54+00:00"
+ "time": "2024-01-15T13:52:52+00:00"
},
{
"name": "laravel/pint",
@@ -7247,16 +7241,16 @@
},
{
"name": "laravel/sail",
- "version": "v1.53.0",
+ "version": "v1.54.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/sail.git",
- "reference": "e340eaa2bea9b99192570c48ed837155dbf24fbb"
+ "reference": "bcc5e06f1a79d806d880a4b027964d2aa5872b07"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/sail/zipball/e340eaa2bea9b99192570c48ed837155dbf24fbb",
- "reference": "e340eaa2bea9b99192570c48ed837155dbf24fbb",
+ "url": "https://api.github.com/repos/laravel/sail/zipball/bcc5e06f1a79d806d880a4b027964d2aa5872b07",
+ "reference": "bcc5e06f1a79d806d880a4b027964d2aa5872b07",
"shasum": ""
},
"require": {
@@ -7306,7 +7300,7 @@
"issues": "https://github.com/laravel/sail/issues",
"source": "https://github.com/laravel/sail"
},
- "time": "2026-02-06T12:16:02+00:00"
+ "time": "2026-03-11T14:10:52+00:00"
},
{
"name": "mockery/mockery",
@@ -7453,36 +7447,38 @@
},
{
"name": "nunomaduro/collision",
- "version": "v8.9.1",
+ "version": "v8.5.0",
"source": {
"type": "git",
"url": "https://github.com/nunomaduro/collision.git",
- "reference": "a1ed3fa530fd60bc515f9303e8520fcb7d4bd935"
+ "reference": "f5c101b929c958e849a633283adff296ed5f38f5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nunomaduro/collision/zipball/a1ed3fa530fd60bc515f9303e8520fcb7d4bd935",
- "reference": "a1ed3fa530fd60bc515f9303e8520fcb7d4bd935",
+ "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f5c101b929c958e849a633283adff296ed5f38f5",
+ "reference": "f5c101b929c958e849a633283adff296ed5f38f5",
"shasum": ""
},
"require": {
- "filp/whoops": "^2.18.4",
- "nunomaduro/termwind": "^2.4.0",
+ "filp/whoops": "^2.16.0",
+ "nunomaduro/termwind": "^2.1.0",
"php": "^8.2.0",
- "symfony/console": "^7.4.4 || ^8.0.4"
+ "symfony/console": "^7.1.5"
},
"conflict": {
- "laravel/framework": "<11.48.0 || >=14.0.0",
- "phpunit/phpunit": "<11.5.50 || >=14.0.0"
+ "laravel/framework": "<11.0.0 || >=12.0.0",
+ "phpunit/phpunit": "<10.5.1 || >=12.0.0"
},
"require-dev": {
- "brianium/paratest": "^7.8.5",
- "larastan/larastan": "^3.9.2",
- "laravel/framework": "^11.48.0 || ^12.52.0",
- "laravel/pint": "^1.27.1",
- "orchestra/testbench-core": "^9.12.0 || ^10.9.0",
- "pestphp/pest": "^3.8.5 || ^4.4.1 || ^5.0.0",
- "sebastian/environment": "^7.2.1 || ^8.0.3 || ^9.0.0"
+ "larastan/larastan": "^2.9.8",
+ "laravel/framework": "^11.28.0",
+ "laravel/pint": "^1.18.1",
+ "laravel/sail": "^1.36.0",
+ "laravel/sanctum": "^4.0.3",
+ "laravel/tinker": "^2.10.0",
+ "orchestra/testbench-core": "^9.5.3",
+ "pestphp/pest": "^2.36.0 || ^3.4.0",
+ "sebastian/environment": "^6.1.0 || ^7.2.0"
},
"type": "library",
"extra": {
@@ -7519,7 +7515,6 @@
"cli",
"command-line",
"console",
- "dev",
"error",
"handling",
"laravel",
@@ -7545,7 +7540,7 @@
"type": "patreon"
}
],
- "time": "2026-02-17T17:33:08+00:00"
+ "time": "2024-10-15T16:06:32+00:00"
},
{
"name": "phar-io/manifest",
@@ -7667,15 +7662,15 @@
},
{
"name": "phpstan/phpstan",
- "version": "2.1.42",
+ "version": "1.12.33",
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/1279e1ce86ba768f0780c9d889852b4e02ff40d0",
- "reference": "1279e1ce86ba768f0780c9d889852b4e02ff40d0",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/37982d6fc7cbb746dda7773530cda557cdf119e1",
+ "reference": "37982d6fc7cbb746dda7773530cda557cdf119e1",
"shasum": ""
},
"require": {
- "php": "^7.4|^8.0"
+ "php": "^7.2|^8.0"
},
"conflict": {
"phpstan/phpstan-shim": "*"
@@ -7716,39 +7711,39 @@
"type": "github"
}
],
- "time": "2026-03-17T14:58:32+00:00"
+ "time": "2026-02-28T20:30:03+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "11.0.12",
+ "version": "10.1.16",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56"
+ "reference": "7e308268858ed6baedc8704a304727d20bc07c77"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2c1ed04922802c15e1de5d7447b4856de949cf56",
- "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77",
+ "reference": "7e308268858ed6baedc8704a304727d20bc07c77",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^5.7.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.1",
- "sebastian/lines-of-code": "^3.0.1",
- "sebastian/version": "^5.0.2",
- "theseer/tokenizer": "^1.3.1"
+ "nikic/php-parser": "^4.19.1 || ^5.1.0",
+ "php": ">=8.1",
+ "phpunit/php-file-iterator": "^4.1.0",
+ "phpunit/php-text-template": "^3.0.1",
+ "sebastian/code-unit-reverse-lookup": "^3.0.0",
+ "sebastian/complexity": "^3.2.0",
+ "sebastian/environment": "^6.1.0",
+ "sebastian/lines-of-code": "^2.0.2",
+ "sebastian/version": "^4.0.1",
+ "theseer/tokenizer": "^1.2.3"
},
"require-dev": {
- "phpunit/phpunit": "^11.5.46"
+ "phpunit/phpunit": "^10.1"
},
"suggest": {
"ext-pcov": "PHP extension that provides line coverage",
@@ -7757,7 +7752,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "11.0.x-dev"
+ "dev-main": "10.1.x-dev"
}
},
"autoload": {
@@ -7786,52 +7781,40 @@
"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.12"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16"
},
"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-12-24T07:01:01+00:00"
+ "time": "2024-08-22T04:31:57+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "5.1.1",
+ "version": "4.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903"
+ "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/2f3a64888c814fc235386b7387dd5b5ed92ad903",
- "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c",
+ "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.3"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.1-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -7859,48 +7842,36 @@
"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.1"
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0"
},
"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-file-iterator",
- "type": "tidelift"
}
],
- "time": "2026-02-02T13:52:54+00:00"
+ "time": "2023-08-31T06:24:48+00:00"
},
{
"name": "phpunit/php-invoker",
- "version": "5.0.1",
+ "version": "4.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2"
+ "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2",
- "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
+ "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
"ext-pcntl": "*",
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^10.0"
},
"suggest": {
"ext-pcntl": "*"
@@ -7908,7 +7879,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.0-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -7934,8 +7905,7 @@
],
"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"
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0"
},
"funding": [
{
@@ -7943,32 +7913,32 @@
"type": "github"
}
],
- "time": "2024-07-03T05:07:44+00:00"
+ "time": "2023-02-03T06:56:09+00:00"
},
{
"name": "phpunit/php-text-template",
- "version": "4.0.1",
+ "version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964"
+ "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964",
- "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748",
+ "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "4.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -7995,7 +7965,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1"
},
"funding": [
{
@@ -8003,32 +7973,32 @@
"type": "github"
}
],
- "time": "2024-07-03T05:08:43+00:00"
+ "time": "2023-08-31T14:07:24+00:00"
},
{
"name": "phpunit/php-timer",
- "version": "7.0.1",
+ "version": "6.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3"
+ "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3",
- "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d",
+ "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "7.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -8054,8 +8024,7 @@
],
"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"
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0"
},
"funding": [
{
@@ -8063,20 +8032,20 @@
"type": "github"
}
],
- "time": "2024-07-03T05:09:35+00:00"
+ "time": "2023-02-03T06:57:52+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "11.5.55",
+ "version": "10.5.63",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00"
+ "reference": "33198268dad71e926626b618f3ec3966661e4d90"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/adc7262fccc12de2b30f12a8aa0b33775d814f00",
- "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/33198268dad71e926626b618f3ec3966661e4d90",
+ "reference": "33198268dad71e926626b618f3ec3966661e4d90",
"shasum": ""
},
"require": {
@@ -8089,24 +8058,23 @@
"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.12",
- "phpunit/php-file-iterator": "^5.1.1",
- "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.3",
- "sebastian/diff": "^6.0.2",
- "sebastian/environment": "^7.2.1",
- "sebastian/exporter": "^6.3.2",
- "sebastian/global-state": "^7.0.2",
- "sebastian/object-enumerator": "^6.0.1",
- "sebastian/recursion-context": "^6.0.3",
- "sebastian/type": "^5.1.3",
- "sebastian/version": "^5.0.2",
- "staabm/side-effects-detector": "^1.0.5"
+ "php": ">=8.1",
+ "phpunit/php-code-coverage": "^10.1.16",
+ "phpunit/php-file-iterator": "^4.1.0",
+ "phpunit/php-invoker": "^4.0.0",
+ "phpunit/php-text-template": "^3.0.1",
+ "phpunit/php-timer": "^6.0.0",
+ "sebastian/cli-parser": "^2.0.1",
+ "sebastian/code-unit": "^2.0.0",
+ "sebastian/comparator": "^5.0.5",
+ "sebastian/diff": "^5.1.1",
+ "sebastian/environment": "^6.1.0",
+ "sebastian/exporter": "^5.1.4",
+ "sebastian/global-state": "^6.0.2",
+ "sebastian/object-enumerator": "^5.0.0",
+ "sebastian/recursion-context": "^5.0.1",
+ "sebastian/type": "^4.0.0",
+ "sebastian/version": "^4.0.1"
},
"suggest": {
"ext-soap": "To be able to generate mocks based on WSDL files"
@@ -8117,7 +8085,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "11.5-dev"
+ "dev-main": "10.5-dev"
}
},
"autoload": {
@@ -8149,7 +8117,7 @@
"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.55"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.63"
},
"funding": [
{
@@ -8173,32 +8141,32 @@
"type": "tidelift"
}
],
- "time": "2026-02-18T12:37:06+00:00"
+ "time": "2026-01-27T05:48:37+00:00"
},
{
"name": "sebastian/cli-parser",
- "version": "3.0.2",
+ "version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180"
+ "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180",
- "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084",
+ "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "2.0-dev"
}
},
"autoload": {
@@ -8222,7 +8190,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1"
},
"funding": [
{
@@ -8230,32 +8198,32 @@
"type": "github"
}
],
- "time": "2024-07-03T04:41:36+00:00"
+ "time": "2024-03-02T07:12:49+00:00"
},
{
"name": "sebastian/code-unit",
- "version": "3.0.3",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit.git",
- "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64"
+ "reference": "a81fee9eef0b7a76af11d121767abc44c104e503"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64",
- "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503",
+ "reference": "a81fee9eef0b7a76af11d121767abc44c104e503",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.5"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "2.0-dev"
}
},
"autoload": {
@@ -8278,8 +8246,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0"
},
"funding": [
{
@@ -8287,32 +8254,32 @@
"type": "github"
}
],
- "time": "2025-03-19T07:56:08+00:00"
+ "time": "2023-02-03T06:58:43+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
- "version": "4.0.1",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "183a9b2632194febd219bb9246eee421dad8d45e"
+ "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e",
- "reference": "183a9b2632194febd219bb9246eee421dad8d45e",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
+ "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "4.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -8334,8 +8301,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0"
},
"funding": [
{
@@ -8343,39 +8309,36 @@
"type": "github"
}
],
- "time": "2024-07-03T04:45:54+00:00"
+ "time": "2023-02-03T06:59:15+00:00"
},
{
"name": "sebastian/comparator",
- "version": "6.3.3",
+ "version": "5.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9"
+ "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2c95e1e86cb8dd41beb8d502057d1081ccc8eca9",
- "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55dfef806eb7dfeb6e7a6935601fef866f8ca48d",
+ "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-mbstring": "*",
- "php": ">=8.2",
- "sebastian/diff": "^6.0",
- "sebastian/exporter": "^6.0"
+ "php": ">=8.1",
+ "sebastian/diff": "^5.0",
+ "sebastian/exporter": "^5.0"
},
"require-dev": {
- "phpunit/phpunit": "^11.4"
- },
- "suggest": {
- "ext-bcmath": "For comparing BcMath\\Number objects"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.3-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -8415,7 +8378,7 @@
"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.3"
+ "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.5"
},
"funding": [
{
@@ -8435,33 +8398,33 @@
"type": "tidelift"
}
],
- "time": "2026-01-24T09:26:40+00:00"
+ "time": "2026-01-24T09:25:16+00:00"
},
{
"name": "sebastian/complexity",
- "version": "4.0.1",
+ "version": "3.2.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "ee41d384ab1906c68852636b6de493846e13e5a0"
+ "reference": "68ff824baeae169ec9f2137158ee529584553799"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0",
- "reference": "ee41d384ab1906c68852636b6de493846e13e5a0",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799",
+ "reference": "68ff824baeae169ec9f2137158ee529584553799",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^5.0",
- "php": ">=8.2"
+ "nikic/php-parser": "^4.18 || ^5.0",
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "4.0-dev"
+ "dev-main": "3.2-dev"
}
},
"autoload": {
@@ -8485,7 +8448,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0"
},
"funding": [
{
@@ -8493,33 +8456,33 @@
"type": "github"
}
],
- "time": "2024-07-03T04:49:50+00:00"
+ "time": "2023-12-21T08:37:17+00:00"
},
{
"name": "sebastian/diff",
- "version": "6.0.2",
+ "version": "5.1.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544"
+ "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544",
- "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e",
+ "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.0",
- "symfony/process": "^4.2 || ^5"
+ "phpunit/phpunit": "^10.0",
+ "symfony/process": "^6.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.0-dev"
+ "dev-main": "5.1-dev"
}
},
"autoload": {
@@ -8552,7 +8515,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1"
},
"funding": [
{
@@ -8560,27 +8523,27 @@
"type": "github"
}
],
- "time": "2024-07-03T04:53:05+00:00"
+ "time": "2024-03-02T07:15:17+00:00"
},
{
"name": "sebastian/environment",
- "version": "7.2.1",
+ "version": "6.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4"
+ "reference": "8074dbcd93529b357029f5cc5058fd3e43666984"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4",
- "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984",
+ "reference": "8074dbcd93529b357029f5cc5058fd3e43666984",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.3"
+ "phpunit/phpunit": "^10.0"
},
"suggest": {
"ext-posix": "*"
@@ -8588,7 +8551,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "7.2-dev"
+ "dev-main": "6.1-dev"
}
},
"autoload": {
@@ -8616,54 +8579,42 @@
"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"
+ "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0"
},
"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"
+ "time": "2024-03-23T08:47:14+00:00"
},
{
"name": "sebastian/exporter",
- "version": "6.3.2",
+ "version": "5.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "70a298763b40b213ec087c51c739efcaa90bcd74"
+ "reference": "0735b90f4da94969541dac1da743446e276defa6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/70a298763b40b213ec087c51c739efcaa90bcd74",
- "reference": "70a298763b40b213ec087c51c739efcaa90bcd74",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0735b90f4da94969541dac1da743446e276defa6",
+ "reference": "0735b90f4da94969541dac1da743446e276defa6",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
- "php": ">=8.2",
- "sebastian/recursion-context": "^6.0"
+ "php": ">=8.1",
+ "sebastian/recursion-context": "^5.0"
},
"require-dev": {
- "phpunit/phpunit": "^11.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.3-dev"
+ "dev-main": "5.1-dev"
}
},
"autoload": {
@@ -8706,7 +8657,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.4"
},
"funding": [
{
@@ -8726,35 +8677,35 @@
"type": "tidelift"
}
],
- "time": "2025-09-24T06:12:51+00:00"
+ "time": "2025-09-24T06:09:11+00:00"
},
{
"name": "sebastian/global-state",
- "version": "7.0.2",
+ "version": "6.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "3be331570a721f9a4b5917f4209773de17f747d7"
+ "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7",
- "reference": "3be331570a721f9a4b5917f4209773de17f747d7",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9",
+ "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "sebastian/object-reflector": "^4.0",
- "sebastian/recursion-context": "^6.0"
+ "php": ">=8.1",
+ "sebastian/object-reflector": "^3.0",
+ "sebastian/recursion-context": "^5.0"
},
"require-dev": {
"ext-dom": "*",
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "7.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -8780,7 +8731,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2"
},
"funding": [
{
@@ -8788,33 +8739,33 @@
"type": "github"
}
],
- "time": "2024-07-03T04:57:36+00:00"
+ "time": "2024-03-02T07:19:19+00:00"
},
{
"name": "sebastian/lines-of-code",
- "version": "3.0.1",
+ "version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a"
+ "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a",
- "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0",
+ "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^5.0",
- "php": ">=8.2"
+ "nikic/php-parser": "^4.18 || ^5.0",
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "2.0-dev"
}
},
"autoload": {
@@ -8838,7 +8789,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2"
},
"funding": [
{
@@ -8846,34 +8797,34 @@
"type": "github"
}
],
- "time": "2024-07-03T04:58:38+00:00"
+ "time": "2023-12-21T08:38:20+00:00"
},
{
"name": "sebastian/object-enumerator",
- "version": "6.0.1",
+ "version": "5.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "f5b498e631a74204185071eb41f33f38d64608aa"
+ "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa",
- "reference": "f5b498e631a74204185071eb41f33f38d64608aa",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906",
+ "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "sebastian/object-reflector": "^4.0",
- "sebastian/recursion-context": "^6.0"
+ "php": ">=8.1",
+ "sebastian/object-reflector": "^3.0",
+ "sebastian/recursion-context": "^5.0"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -8895,8 +8846,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0"
},
"funding": [
{
@@ -8904,32 +8854,32 @@
"type": "github"
}
],
- "time": "2024-07-03T05:00:13+00:00"
+ "time": "2023-02-03T07:08:32+00:00"
},
{
"name": "sebastian/object-reflector",
- "version": "4.0.1",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9"
+ "reference": "24ed13d98130f0e7122df55d06c5c4942a577957"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9",
- "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957",
+ "reference": "24ed13d98130f0e7122df55d06c5c4942a577957",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.0"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "4.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -8951,8 +8901,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0"
},
"funding": [
{
@@ -8960,32 +8909,32 @@
"type": "github"
}
],
- "time": "2024-07-03T05:01:32+00:00"
+ "time": "2023-02-03T07:06:18+00:00"
},
{
"name": "sebastian/recursion-context",
- "version": "6.0.3",
+ "version": "5.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc"
+ "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc",
- "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a",
+ "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "6.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -9016,7 +8965,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.1"
},
"funding": [
{
@@ -9036,32 +8985,32 @@
"type": "tidelift"
}
],
- "time": "2025-08-13T04:42:22+00:00"
+ "time": "2025-08-10T07:50:56+00:00"
},
{
"name": "sebastian/type",
- "version": "5.1.3",
+ "version": "4.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449"
+ "reference": "462699a16464c3944eefc02ebdd77882bd3925bf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/f77d2d4e78738c98d9a68d2596fe5e8fa380f449",
- "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf",
+ "reference": "462699a16464c3944eefc02ebdd77882bd3925bf",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^11.3"
+ "phpunit/phpunit": "^10.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.1-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -9084,50 +9033,37 @@
"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"
+ "source": "https://github.com/sebastianbergmann/type/tree/4.0.0"
},
"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"
+ "time": "2023-02-03T07:10:45+00:00"
},
{
"name": "sebastian/version",
- "version": "5.0.2",
+ "version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
- "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874"
+ "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874",
- "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17",
+ "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17",
"shasum": ""
},
"require": {
- "php": ">=8.2"
+ "php": ">=8.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "5.0-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -9150,8 +9086,7 @@
"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"
+ "source": "https://github.com/sebastianbergmann/version/tree/4.0.1"
},
"funding": [
{
@@ -9159,134 +9094,7 @@
"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/yaml",
- "version": "v8.0.6",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "5f006c50a981e1630bbb70ad409c5d85f9a716e0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/5f006c50a981e1630bbb70ad409c5d85f9a716e0",
- "reference": "5f006c50a981e1630bbb70ad409c5d85f9a716e0",
- "shasum": ""
- },
- "require": {
- "php": ">=8.4",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "symfony/console": "<7.4"
- },
- "require-dev": {
- "symfony/console": "^7.4|^8.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/v8.0.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": "2026-02-09T10:14:57+00:00"
+ "time": "2023-02-07T11:34:05+00:00"
},
{
"name": "theseer/tokenizer",