diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..7ebefc0 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,78 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + +permissions: + contents: read + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + container: + image: git.bayliss.cloud/harry/gitea-ci-runner:php8.4 + + defaults: + run: + shell: bash + + steps: + - name: Check out repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install Composer dependencies + run: composer install --no-interaction --prefer-dist --optimize-autoloader + + - name: Install frontend dependencies + run: bun install --frozen-lockfile + + - name: Run frontend lint + run: bun run lint:check + + - name: Check frontend formatting + run: bun run format:check + + - name: Check PHP formatting + run: vendor/bin/pint --test + + - name: Run static analysis + run: composer phpstan + + tests: + name: Tests + runs-on: ubuntu-latest + container: + image: git.bayliss.cloud/harry/gitea-ci-runner:php8.4 + + defaults: + run: + shell: bash + + env: + APP_ENV: testing + APP_KEY: base64:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + CACHE_STORE: array + DB_CONNECTION: sqlite + DB_DATABASE: database/testing.sqlite + MAIL_MAILER: array + QUEUE_CONNECTION: sync + SESSION_DRIVER: array + + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Prepare SQLite database + run: touch database/testing.sqlite + + - name: Install Composer dependencies + run: composer install --no-interaction --prefer-dist --optimize-autoloader + + - name: Run test suite with coverage + run: composer coverage diff --git a/.prettierignore b/.prettierignore deleted file mode 100644 index df954ec..0000000 --- a/.prettierignore +++ /dev/null @@ -1,3 +0,0 @@ -resources/js/components/ui/* -resources/js/ziggy.js -resources/views/mail/* diff --git a/.prettierrc b/.prettierrc deleted file mode 100644 index f2264ac..0000000 --- a/.prettierrc +++ /dev/null @@ -1,18 +0,0 @@ -{ - "semi": true, - "singleQuote": true, - "singleAttributePerLine": false, - "htmlWhitespaceSensitivity": "css", - "printWidth": 150, - "plugins": ["prettier-plugin-organize-imports", "prettier-plugin-tailwindcss"], - "tailwindFunctions": ["clsx", "cn"], - "tabWidth": 4, - "overrides": [ - { - "files": "**/*.yml", - "options": { - "tabWidth": 2 - } - } - ] -} diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index 29b2418..9fc4a66 100644 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -3,13 +3,8 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; -use App\Models\User; -use Illuminate\Auth\Events\Registered; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Hash; -use Illuminate\Validation\Rules; use Inertia\Inertia; use Inertia\Response; @@ -23,31 +18,8 @@ class RegisteredUserController extends Controller return Inertia::render('auth/Register'); } - /** - * Handle an incoming registration request. - * - * @throws \Illuminate\Validation\ValidationException - */ public function store(Request $request): RedirectResponse { abort(403, 'Registration is disabled.'); - - $request->validate([ - 'name' => 'required|string|max:255', - 'email' => 'required|string|lowercase|email|max:255|unique:'.User::class, - 'password' => ['required', 'confirmed', Rules\Password::defaults()], - ]); - - $user = User::create([ - 'name' => $request->name, - 'email' => $request->email, - 'password' => Hash::make($request->password), - ]); - - event(new Registered($user)); - - Auth::login($user); - - return to_route('dashboard'); } } diff --git a/app/Http/Integrations/Requests/Hetzner/Networks/CreateNetworkRequest.php b/app/Http/Integrations/Requests/Hetzner/Networks/CreateNetworkRequest.php index ffe6a9f..290b475 100644 --- a/app/Http/Integrations/Requests/Hetzner/Networks/CreateNetworkRequest.php +++ b/app/Http/Integrations/Requests/Hetzner/Networks/CreateNetworkRequest.php @@ -24,17 +24,17 @@ class CreateNetworkRequest extends Request implements HasBody 'name' => $this->name, 'ip_range' => '10.0.0.0/16', ]; - + if ($this->networkZone) { $body['subnets'] = [ [ 'type' => 'cloud', 'ip_range' => '10.0.1.0/24', - 'network_zone' => $this->networkZone - ] + 'network_zone' => $this->networkZone, + ], ]; } - + return $body; } diff --git a/app/Models/FirewallRule.php b/app/Models/FirewallRule.php index 4a5b442..871acc0 100644 --- a/app/Models/FirewallRule.php +++ b/app/Models/FirewallRule.php @@ -42,9 +42,9 @@ class FirewallRule extends Model $command .= ' delete'; } - if ($this->type === 'allow') { + if ($this->type === FirewallRuleType::ALLOW) { $command .= ' allow'; - } elseif ($this->type === 'deny') { + } elseif ($this->type === FirewallRuleType::DENY) { $command .= ' deny'; } diff --git a/app/Models/Server.php b/app/Models/Server.php index be797ef..3fb80ab 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -31,7 +31,7 @@ class Server extends Model public function network(): BelongsTo { - return $this->belongsTo(Network::class, 'network'); + return $this->belongsTo(Network::class, 'network_id'); } public function organisation(): BelongsTo diff --git a/app/Support/Ip.php b/app/Support/Ip.php index 5b62ffe..ec11cbd 100644 --- a/app/Support/Ip.php +++ b/app/Support/Ip.php @@ -27,7 +27,8 @@ class Ip } if ($maskBits > 0) { - $maskValue = chr(pow(2, $maskBits) - 1); + $maskValue = (1 << $maskBits) - 1; + $maskValue <<= (8 - $maskBits); $subnetByte = ord($subnet[$maskBytes]); $ipByte = ord($ip[$maskBytes]); diff --git a/bun.lockb b/bun.lockb index 13eb017..4befe71 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/composer.json b/composer.json index 484df4f..5a522cc 100644 --- a/composer.json +++ b/composer.json @@ -20,11 +20,13 @@ }, "require-dev": { "fakerphp/faker": "^1.23", + "larastan/larastan": "^3.0", "laravel/boost": "^1.1", "laravel/pail": "^1.2.2", "laravel/pint": "^1.18", "laravel/sail": "^1.41", "mockery/mockery": "^1.6", + "mrpunyapal/peststan": "^0.2.5", "nunomaduro/collision": "^8.6", "pestphp/pest": "^3.7", "pestphp/pest-plugin-laravel": "^3.1" @@ -65,6 +67,14 @@ "npm run build:ssr", "Composer\\Config::disableProcessTimeout", "npx concurrently -c \"#93c5fd,#c4b5fd,#fb7185,#fdba74\" \"php artisan serve\" \"php artisan queue:listen --tries=1\" \"php artisan pail --timeout=0\" \"php artisan inertia:start-ssr\" --names=server,queue,logs,ssr" + ], + "phpstan": "vendor/bin/phpstan analyse --memory-limit=1G", + "coverage": [ + "XDEBUG_MODE=coverage vendor/bin/pest --coverage --min=95" + ], + "quality": [ + "composer phpstan", + "composer coverage" ] }, "extra": { diff --git a/composer.lock b/composer.lock index 954a238..add056b 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": "69f6de114270a8beb46d9283a2acd24d", + "content-hash": "f73763833c370943f03916f4eaa3ce26", "packages": [ { "name": "brick/math", @@ -6540,6 +6540,47 @@ }, "time": "2020-07-09T08:09:16+00:00" }, + { + "name": "iamcal/sql-parser", + "version": "v0.6", + "source": { + "type": "git", + "url": "https://github.com/iamcal/SQLParser.git", + "reference": "947083e2dca211a6f12fb1beb67a01e387de9b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/947083e2dca211a6f12fb1beb67a01e387de9b62", + "reference": "947083e2dca211a6f12fb1beb67a01e387de9b62", + "shasum": "" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^1.0", + "phpunit/phpunit": "^5|^6|^7|^8|^9" + }, + "type": "library", + "autoload": { + "psr-4": { + "iamcal\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cal Henderson", + "email": "cal@iamcal.com" + } + ], + "description": "MySQL schema parser", + "support": { + "issues": "https://github.com/iamcal/SQLParser/issues", + "source": "https://github.com/iamcal/SQLParser/tree/v0.6" + }, + "time": "2025-03-17T16:59:46+00:00" + }, { "name": "jean85/pretty-package-versions", "version": "2.1.1", @@ -6600,6 +6641,99 @@ }, "time": "2025-03-19T14:43:43+00:00" }, + { + "name": "larastan/larastan", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/larastan/larastan.git", + "reference": "b032de3918a8bab9ee7f1bb71609842243fd89d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/larastan/larastan/zipball/b032de3918a8bab9ee7f1bb71609842243fd89d9", + "reference": "b032de3918a8bab9ee7f1bb71609842243fd89d9", + "shasum": "" + }, + "require": { + "ext-json": "*", + "iamcal/sql-parser": "^0.6.0", + "illuminate/console": "^11.42.2 || ^12.0", + "illuminate/container": "^11.42.2 || ^12.0", + "illuminate/contracts": "^11.42.2 || ^12.0", + "illuminate/database": "^11.42.2 || ^12.0", + "illuminate/http": "^11.42.2 || ^12.0", + "illuminate/pipeline": "^11.42.2 || ^12.0", + "illuminate/support": "^11.42.2 || ^12.0", + "php": "^8.2", + "phpstan/phpstan": "^2.1.8" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0", + "laravel/framework": "^11.42.2 || ^12.0", + "mockery/mockery": "^1.6", + "nikic/php-parser": "^5.3", + "orchestra/canvas": "^v9.1.3 || ^10.0", + "orchestra/testbench-core": "^9.5.2 || ^10.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpunit/phpunit": "^10.5.35 || ^11.3.6" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Larastan\\Larastan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Can Vural", + "email": "can9119@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" + ], + "support": { + "issues": "https://github.com/larastan/larastan/issues", + "source": "https://github.com/larastan/larastan/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://github.com/canvural", + "type": "github" + } + ], + "time": "2025-04-03T19:11:55+00:00" + }, { "name": "laravel/boost", "version": "v1.1.5", @@ -7080,6 +7214,69 @@ }, "time": "2024-05-16T03:13:13+00:00" }, + { + "name": "mrpunyapal/peststan", + "version": "0.2.10", + "source": { + "type": "git", + "url": "https://github.com/MrPunyapal/PestStan.git", + "reference": "750859a911050915cb6e3efbfde30e900ad717bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MrPunyapal/PestStan/zipball/750859a911050915cb6e3efbfde30e900ad717bf", + "reference": "750859a911050915cb6e3efbfde30e900ad717bf", + "shasum": "" + }, + "require": { + "php": "^8.2", + "phpstan/phpstan": "^2.0" + }, + "require-dev": { + "laravel/pint": "^1.18", + "mrpunyapal/rector-pest": "^0.2.0", + "nunomaduro/pao": "^0.1.4", + "pestphp/pest": "^3.0 || ^4.0 || ^5.0", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan-strict-rules": "^2.0", + "rector/rector": "^2.0" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PestStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan extension for Pest PHP testing framework", + "keywords": [ + "PHPStan", + "pest", + "static-analysis", + "testing" + ], + "support": { + "issues": "https://github.com/MrPunyapal/PestStan/issues", + "source": "https://github.com/MrPunyapal/PestStan/tree/0.2.10" + }, + "funding": [ + { + "url": "https://github.com/mrpunyapal", + "type": "github" + } + ], + "time": "2026-05-10T16:55:11+00:00" + }, { "name": "myclabs/deep-copy", "version": "1.13.0", @@ -7976,6 +8173,59 @@ }, "time": "2025-02-19T13:28:12+00:00" }, + { + "name": "phpstan/phpstan", + "version": "2.1.54", + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/8be50c3992107dc837b17da4d140fbbdf9a5c5bd", + "reference": "8be50c3992107dc837b17da4d140fbbdf9a5c5bd", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2026-04-29T13:31:09+00:00" + }, { "name": "phpunit/php-code-coverage", "version": "11.0.9", diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 93770e7..e7932aa 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -44,7 +44,7 @@ class DatabaseSeeder extends Seeder 'name' => 'keystone', 'external_id' => 'net-12345', 'provider_id' => $provider->id, - 'ip_range' => fake()->ipv4() . '/24', + 'ip_range' => fake()->ipv4().'/24', ]); $servers = Server::factory(40) diff --git a/eslint.config.js b/eslint.config.js deleted file mode 100644 index 388a5a6..0000000 --- a/eslint.config.js +++ /dev/null @@ -1,19 +0,0 @@ -import prettier from 'eslint-config-prettier'; -import vue from 'eslint-plugin-vue'; - -import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript'; - -export default defineConfigWithVueTs( - vue.configs['flat/essential'], - vueTsConfigs.recommended, - { - ignores: ['vendor', 'node_modules', 'public', 'bootstrap/ssr', 'tailwind.config.js', 'resources/js/components/ui/*'], - }, - { - rules: { - 'vue/multi-word-component-names': 'off', - '@typescript-eslint/no-explicit-any': 'off', - }, - }, - prettier, -); diff --git a/package.json b/package.json index 70be899..ff441cc 100644 --- a/package.json +++ b/package.json @@ -5,21 +5,15 @@ "build": "vite build", "build:ssr": "vite build && vite build --ssr", "dev": "vite", - "format": "prettier --write resources/", - "format:check": "prettier --check resources/", - "lint": "eslint . --fix" + "format": "oxfmt resources/", + "format:check": "oxfmt --check resources/", + "lint": "oxlint --fix", + "lint:check": "oxlint" }, "devDependencies": { - "@eslint/js": "^9.19.0", "@types/node": "^22.13.5", - "@vue/eslint-config-typescript": "^14.3.0", - "eslint": "^9.17.0", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-vue": "^9.32.0", - "prettier": "^3.4.2", - "prettier-plugin-organize-imports": "^4.1.0", - "prettier-plugin-tailwindcss": "^0.6.9", - "typescript-eslint": "^8.23.0", + "oxfmt": "^0.49.0", + "oxlint": "^1.64.0", "vue-tsc": "^2.2.4" }, "dependencies": { diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000..ded241e --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,5011 @@ +parameters: + ignoreErrors: + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:services\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Actions/Applications/CreateLaravelEnvironment.php + + - + message: '#^Cannot access property \$id on mixed\.$#' + identifier: property.nonObject + count: 1 + path: app/Actions/Applications/CreateLaravelEnvironment.php + + - + message: '#^Cannot call method create\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Applications/CreateLaravelEnvironment.php + + - + message: '#^Method App\\Actions\\Applications\\CreateLaravelEnvironment\:\:execute\(\) should return App\\Models\\Environment but returns Illuminate\\Database\\Eloquent\\Model\.$#' + identifier: return.type + count: 1 + path: app/Actions/Applications/CreateLaravelEnvironment.php + + - + message: '#^Binary operation "\." between ''app/private/deploy…'' and mixed results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: app/Actions/Applications/GenerateDeployKey.php + + - + message: '#^Cannot call method toString\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Applications/GenerateDeployKey.php + + - + message: '#^Cannot call method uuid\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Applications/GenerateDeployKey.php + + - + message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: app/Actions/Applications/VerifyRepositoryAccess.php + + - + message: '#^Cannot call method random\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Applications/VerifyRepositoryAccess.php + + - + message: '#^Binary operation "\." between ''Provision '' and mixed results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Binary operation "\." between mixed and '' '' results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:steps\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Cannot access property \$name on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Cannot access property \$value on string\.$#' + identifier: property.nonObject + count: 2 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Cannot call method create\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Match arm comparison between string and App\\Enums\\ServiceType\:\:CADDY is always false\.$#' + identifier: match.alwaysFalse + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Match arm comparison between string and App\\Enums\\ServiceType\:\:POSTGRES is always false\.$#' + identifier: match.alwaysFalse + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Match arm comparison between string and App\\Enums\\ServiceType\:\:VALKEY is always false\.$#' + identifier: match.alwaysFalse + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Method App\\Actions\\Environments\\AttachManagedService\:\:createDefaultSlice\(\) never returns App\\Models\\ServiceSlice so it can be removed from the return type\.$#' + identifier: return.unusedType + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Method App\\Actions\\Environments\\AttachManagedService\:\:execute\(\) should return App\\Models\\EnvironmentAttachment but returns Illuminate\\Database\\Eloquent\\Model\.$#' + identifier: return.type + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Offset ''database'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\\:\:max\(\) expects \(callable\(Illuminate\\Database\\Eloquent\\Model\)\: mixed\)\|string\|null, Closure\(App\\Models\\ServiceSlice\)\: 0 given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Part \$service\-\>type\-\>value \(mixed\) of encapsed string cannot be cast to string\.$#' + identifier: encapsedStringPart.nonString + count: 1 + path: app/Actions/Environments/AttachManagedService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$server\.$#' + identifier: property.notFound + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot access property \$application on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 2 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot access property \$branch on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot access property \$deploy_key_private on mixed\.$#' + identifier: property.nonObject + count: 2 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot access property \$repository_url on mixed\.$#' + identifier: property.nonObject + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot call method dockerfileTemplate\(\) on class\-string\|object\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot call method driver\(\) on mixed\.$#' + identifier: method.nonObject + count: 2 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot call method filter\(\) on mixed\.$#' + identifier: method.nonObject + count: 2 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot call method first\(\) on mixed\.$#' + identifier: method.nonObject + count: 4 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot call method flatMap\(\) on mixed\.$#' + identifier: method.nonObject + count: 2 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot call method get\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot call method pluck\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot call method random\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot call method services\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 2 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot call method where\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Cannot call method with\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Expression on left side of \?\? is not nullable\.$#' + identifier: nullCoalesce.expr + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Method App\\Actions\\Environments\\BuildApplicationArtifact\:\:dockerfile\(\) should return string but returns mixed\.$#' + identifier: return.type + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Offset ''build_strategy'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 2 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Offset ''server_ids'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Only iterables can be unpacked, array\|string given\.$#' + identifier: arrayUnpacking.nonIterable + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Parameter \#1 \$arg of function escapeshellarg expects string, mixed given\.$#' + identifier: argument.type + count: 2 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Parameter \#1 \$object_or_class of function method_exists expects object\|string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Parameter \#2 \$contents of method App\\Actions\\Environments\\BuildApplicationArtifact\:\:writeFileCommand\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Strict comparison using \=\=\= between App\\Enums\\BuildStrategy\:\:TARGET_SERVER and App\\Enums\\BuildStrategy\:\:EXTERNAL_REGISTRY will always evaluate to false\.$#' + identifier: identical.alwaysFalse + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Strict comparison using \=\=\= between null and ''dedicated_builder'' will always evaluate to false\.$#' + identifier: identical.alwaysFalse + count: 1 + path: app/Actions/Environments/BuildApplicationArtifact.php + + - + message: '#^Call to function in_array\(\) with arguments ''auto'', array\{''disabled'', ''manual''\} and true will always evaluate to false\.$#' + identifier: function.impossibleType + count: 1 + path: app/Actions/Environments/BuildMigrationScript.php + + - + message: '#^Offset ''migration_command'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Actions/Environments/BuildMigrationScript.php + + - + message: '#^Offset ''migration_mode'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Actions/Environments/BuildMigrationScript.php + + - + message: '#^Result of && is always false\.$#' + identifier: booleanAnd.alwaysFalse + count: 1 + path: app/Actions/Environments/BuildMigrationScript.php + + - + message: '#^Cannot access property \$organisation_id on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Actions/Environments/CreateLaravelWorkerService.php + + - + message: '#^Method App\\Actions\\Environments\\CreateLaravelWorkerService\:\:execute\(\) should return App\\Models\\Service but returns Illuminate\\Database\\Eloquent\\Model\.$#' + identifier: return.type + count: 1 + path: app/Actions/Environments/CreateLaravelWorkerService.php + + - + message: '#^Offset ''php_version'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Actions/Environments/CreateLaravelWorkerService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$type\.$#' + identifier: property.notFound + count: 1 + path: app/Actions/Environments/CreateMigrationOperation.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:operations\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Actions/Environments/CreateMigrationOperation.php + + - + message: '#^Cannot call method create\(\) on mixed\.$#' + identifier: method.nonObject + count: 2 + path: app/Actions/Environments/CreateMigrationOperation.php + + - + message: '#^Cannot call method steps\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/CreateMigrationOperation.php + + - + message: '#^Method App\\Actions\\Environments\\CreateMigrationOperation\:\:execute\(\) should return App\\Models\\Operation but returns mixed\.$#' + identifier: return.type + count: 1 + path: app/Actions/Environments/CreateMigrationOperation.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\\:\:first\(\) expects \(callable\(Illuminate\\Database\\Eloquent\\Model, int\)\: bool\)\|null, Closure\(App\\Models\\Service\)\: bool given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/CreateMigrationOperation.php + + - + message: '#^Parameter \#1 \$service of method App\\Actions\\Environments\\BuildMigrationScript\:\:execute\(\) expects App\\Models\\Service, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/CreateMigrationOperation.php + + - + message: '#^Parameter \#2 \$haystack of function in_array expects array, array\|string given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/CreateMigrationOperation.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$replicas\.$#' + identifier: property.notFound + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Cannot access property \$id on mixed\.$#' + identifier: property.nonObject + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Cannot access property \$name on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Cannot access property \$organisation on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 2 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Cannot access property \$url on mixed\.$#' + identifier: property.nonObject + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Cannot call method filter\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Cannot call method first\(\) on mixed\.$#' + identifier: method.nonObject + count: 2 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Cannot call method pluck\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Cannot call method registries\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Cannot call method services\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Cannot call method where\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Method App\\Actions\\Environments\\PlanBuildArtifact\:\:execute\(\) should return App\\Models\\BuildArtifact but returns Illuminate\\Database\\Eloquent\\Model\.$#' + identifier: return.type + count: 2 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\\:\:flatMap\(\) expects callable\(Illuminate\\Database\\Eloquent\\Model, int\)\: \(array\\|Illuminate\\Support\\Collection\\), Closure\(mixed\)\: mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Parameter \#1 \$string of function str expects string\|null, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Unable to resolve the template type TFlatMapKey in call to method Illuminate\\Support\\Collection\\:\:flatMap\(\)$#' + identifier: argument.templateType + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Unable to resolve the template type TFlatMapValue in call to method Illuminate\\Support\\Collection\\:\:flatMap\(\)$#' + identifier: argument.templateType + count: 1 + path: app/Actions/Environments/PlanBuildArtifact.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$replicas\.$#' + identifier: property.notFound + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$service\.$#' + identifier: property.notFound + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$value\.$#' + identifier: property.notFound + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Cannot access property \$organisation on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Cannot call method doesntExist\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Cannot call method filter\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Cannot call method pluck\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Cannot call method registries\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\\:\:flatMap\(\) expects callable\(Illuminate\\Database\\Eloquent\\Model, int\)\: \(array\\|Illuminate\\Support\\Collection\\), Closure\(mixed\)\: mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Parameter \#2 \$haystack of function in_array expects array, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Parameter \$dependencies of class App\\Data\\Environments\\EnvironmentDeploymentPlan constructor expects array\, array\ given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Parameter \$services of class App\\Data\\Environments\\EnvironmentDeploymentPlan constructor expects array\, array\ given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Result of \|\| is always true\.$#' + identifier: booleanOr.alwaysTrue + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Strict comparison using \!\=\= between string and App\\Enums\\SchedulerMode\:\:SINGLE will always evaluate to true\.$#' + identifier: notIdentical.alwaysTrue + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Unable to resolve the template type TFlatMapKey in call to method Illuminate\\Support\\Collection\\:\:flatMap\(\)$#' + identifier: argument.templateType + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Unable to resolve the template type TFlatMapValue in call to method Illuminate\\Support\\Collection\\:\:flatMap\(\)$#' + identifier: argument.templateType + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Unable to resolve the template type TMapValue in call to method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\)$#' + identifier: argument.templateType + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Unreachable statement \- code above always terminates\.$#' + identifier: deadCode.unreachable + count: 1 + path: app/Actions/Environments/PlanEnvironmentDeployment.php + + - + message: '#^Binary operation "\." between non\-falsy\-string and mixed results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: app/Actions/Environments/ResolveEnvironmentCommit.php + + - + message: '#^Cannot access property \$deploy_key_private on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 2 + path: app/Actions/Environments/ResolveEnvironmentCommit.php + + - + message: '#^Cannot access property \$repository_url on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Actions/Environments/ResolveEnvironmentCommit.php + + - + message: '#^Cannot call method random\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Environments/ResolveEnvironmentCommit.php + + - + message: '#^Parameter \#1 \$command of method Illuminate\\Process\\PendingProcess\:\:run\(\) expects array\\|string\|null, array\ given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/ResolveEnvironmentCommit.php + + - + message: '#^Parameter \#2 \$contents of static method Illuminate\\Support\\Facades\\File\:\:put\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Environments/ResolveEnvironmentCommit.php + + - + message: '#^Cannot call method execute\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/FirewallRules/InstallFirewallRule.php + + - + message: '#^Cannot call method isSuccessful\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/FirewallRules/InstallFirewallRule.php + + - + message: '#^Cannot call method sshClient\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/FirewallRules/InstallFirewallRule.php + + - + message: '#^Method App\\Actions\\FirewallRules\\InstallFirewallRule\:\:execute\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Actions/FirewallRules/InstallFirewallRule.php + + - + message: '#^Cannot call method execute\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/FirewallRules/UninstallFirewallRule.php + + - + message: '#^Cannot call method isSuccessful\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/FirewallRules/UninstallFirewallRule.php + + - + message: '#^Cannot call method sshClient\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/FirewallRules/UninstallFirewallRule.php + + - + message: '#^Method App\\Actions\\FirewallRules\\UninstallFirewallRule\:\:execute\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Actions/FirewallRules/UninstallFirewallRule.php + + - + message: '#^Method App\\Actions\\GenerateRandomSlug\:\:execute\(\) has parameter \$adjectiveCount with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: app/Actions/GenerateRandomSlug.php + + - + message: '#^Parameter \#2 \$string of function explode expects string, string\|false given\.$#' + identifier: argument.type + count: 2 + path: app/Actions/GenerateRandomSlug.php + + - + message: '#^Method App\\Actions\\Servers\\SyncUfwRules\:\:execute\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Actions/Servers/SyncUfwRules.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$credentials\.$#' + identifier: property.notFound + count: 1 + path: app/Actions/Services/CreateService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 2 + path: app/Actions/Services/CreateService.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:driver\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Actions/Services/CreateService.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:replicas\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Actions/Services/CreateService.php + + - + message: '#^Cannot call method create\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Services/CreateService.php + + - + message: '#^Cannot call method defaultCredentials\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Services/CreateService.php + + - + message: '#^Method App\\Actions\\Services\\CreateService\:\:execute\(\) should return App\\Models\\Service but returns Illuminate\\Database\\Eloquent\\Model\.$#' + identifier: return.type + count: 1 + path: app/Actions/Services/CreateService.php + + - + message: '#^Parameter \#1 \$object_or_class of function method_exists expects object\|string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Services/CreateService.php + + - + message: '#^Parameter \#1 \$service of class App\\Jobs\\Services\\DeployService constructor expects App\\Models\\Service, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Actions/Services/CreateService.php + + - + message: '#^Part \$service\-\>id \(mixed\) of encapsed string cannot be cast to string\.$#' + identifier: encapsedStringPart.nonString + count: 2 + path: app/Actions/Services/CreateService.php + + - + message: '#^Call to function in_array\(\) with arguments string, array\{App\\Enums\\ServiceType\:\:POSTGRES, App\\Enums\\ServiceType\:\:VALKEY\} and true will always evaluate to false\.$#' + identifier: function.impossibleType + count: 1 + path: app/Actions/Services/CreateStatefulServiceUpdateOperation.php + + - + message: '#^Match arm comparison between string and App\\Enums\\ServiceType\:\:POSTGRES is always false\.$#' + identifier: match.alwaysFalse + count: 1 + path: app/Actions/Services/CreateStatefulServiceUpdateOperation.php + + - + message: '#^Match arm comparison between string and App\\Enums\\ServiceType\:\:VALKEY is always false\.$#' + identifier: match.alwaysFalse + count: 1 + path: app/Actions/Services/CreateStatefulServiceUpdateOperation.php + + - + message: '#^Method App\\Actions\\Services\\CreateStatefulServiceUpdateOperation\:\:composeUploadScript\(\) is unused\.$#' + identifier: method.unused + count: 1 + path: app/Actions/Services/CreateStatefulServiceUpdateOperation.php + + - + message: '#^Method App\\Actions\\Services\\CreateStatefulServiceUpdateOperation\:\:namedVolume\(\) is unused\.$#' + identifier: method.unused + count: 1 + path: app/Actions/Services/CreateStatefulServiceUpdateOperation.php + + - + message: '#^Method App\\Actions\\Services\\CreateStatefulServiceUpdateOperation\:\:namedVolume\(\) never returns string so it can be removed from the return type\.$#' + identifier: return.unusedType + count: 1 + path: app/Actions/Services/CreateStatefulServiceUpdateOperation.php + + - + message: '#^Offset ''persistence'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Actions/Services/CreateStatefulServiceUpdateOperation.php + + - + message: '#^Ternary operator condition is always false\.$#' + identifier: ternary.alwaysFalse + count: 1 + path: app/Actions/Services/CreateStatefulServiceUpdateOperation.php + + - + message: '#^Unreachable statement \- code above always terminates\.$#' + identifier: deadCode.unreachable + count: 1 + path: app/Actions/Services/CreateStatefulServiceUpdateOperation.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$ipv4\.$#' + identifier: property.notFound + count: 1 + path: app/Actions/Services/RegisterServiceEndpoint.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$private_ip\.$#' + identifier: property.notFound + count: 1 + path: app/Actions/Services/RegisterServiceEndpoint.php + + - + message: '#^Cannot access property \$ipv4 on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 2 + path: app/Actions/Services/RegisterServiceEndpoint.php + + - + message: '#^Cannot access property \$private_ip on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 2 + path: app/Actions/Services/RegisterServiceEndpoint.php + + - + message: '#^Cannot call method endpoints\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Services/RegisterServiceEndpoint.php + + - + message: '#^Cannot call method updateOrCreate\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Actions/Services/RegisterServiceEndpoint.php + + - + message: '#^Method App\\Actions\\Services\\RegisterServiceEndpoint\:\:execute\(\) should return App\\Models\\ServiceEndpoint but returns mixed\.$#' + identifier: return.type + count: 1 + path: app/Actions/Services/RegisterServiceEndpoint.php + + - + message: '#^Method App\\Actions\\Services\\RegisterServiceEndpoint\:\:hostname\(\) should return string but returns mixed\.$#' + identifier: return.type + count: 1 + path: app/Actions/Services/RegisterServiceEndpoint.php + + - + message: '#^Method App\\Actions\\Services\\RegisterServiceEndpoint\:\:ipAddress\(\) should return string\|null but returns mixed\.$#' + identifier: return.type + count: 1 + path: app/Actions/Services/RegisterServiceEndpoint.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$server\.$#' + identifier: property.notFound + count: 1 + path: app/Actions/Services/ResolveServiceImageDigest.php + + - + message: '#^Parameter \#2 \$string of function explode expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Console/Commands/CreateServiceCommand.php + + - + message: '#^Parameter \$name of method App\\Actions\\Services\\CreateService\:\:execute\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Console/Commands/CreateServiceCommand.php + + - + message: '#^Parameter \$server of method App\\Actions\\Services\\CreateService\:\:execute\(\) expects App\\Models\\Server, App\\Models\\Server\|Illuminate\\Database\\Eloquent\\Collection\ given\.$#' + identifier: argument.type + count: 1 + path: app/Console/Commands/CreateServiceCommand.php + + - + message: '#^Cannot access offset int\|string on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Console/Commands/GenerateJSEnums.php + + - + message: '#^Method App\\Console\\Commands\\GenerateJSEnums\:\:load\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Console/Commands/GenerateJSEnums.php + + - + message: '#^Method App\\Console\\Commands\\GenerateJSEnums\:\:load\(\) has parameter \$paths with no type specified\.$#' + identifier: missingType.parameter + count: 1 + path: app/Console/Commands/GenerateJSEnums.php + + - + message: '#^Parameter \#1 \$array of function array_keys expects array, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Console/Commands/GenerateJSEnums.php + + - + message: '#^Parameter \#1 \$array of function array_unique expects an array of values castable to string, array given\.$#' + identifier: argument.type + count: 1 + path: app/Console/Commands/GenerateJSEnums.php + + - + message: '#^Parameter \#1 \$dirs of method Symfony\\Component\\Finder\\Finder\:\:in\(\) expects array\\|string, array given\.$#' + identifier: argument.type + count: 1 + path: app/Console/Commands/GenerateJSEnums.php + + - + message: '#^Parameter \#1 \$filename of function is_dir expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Console/Commands/GenerateJSEnums.php + + - + message: '#^Parameter \#2 \$array of function array_map expects array, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Console/Commands/GenerateJSEnums.php + + - + message: '#^Method App\\Console\\Commands\\Setup\\GenerateSshKey\:\:handle\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Console/Commands/Setup/GenerateSshKey.php + + - + message: '#^Method App\\Console\\Commands\\Setup\\Setup\:\:handle\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Console/Commands/Setup/Setup.php + + - + message: '#^Method App\\Data\\Operations\\PlannedStep\:\:__construct\(\) has parameter \$secrets with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Data/Operations/PlannedStep.php + + - + message: '#^Method App\\Data\\Operations\\PlannedStep\:\:secrets\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Data/Operations/PlannedStep.php + + - + message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Data/Operations/PlannedStep.php + + - + message: '#^Property App\\Data\\Operations\\PlannedStep\:\:\$script \(string\) does not accept mixed\.$#' + identifier: assign.propertyType + count: 1 + path: app/Data/Operations/PlannedStep.php + + - + message: '#^Method App\\Drivers\\DatabaseDriver\:\:__construct\(\) has parameter \$credentials with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Drivers/DatabaseDriver.php + + - + message: '#^Method App\\Drivers\\DatabaseDriver\:\:defaultCredentials\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Drivers/DatabaseDriver.php + + - + message: '#^Property App\\Drivers\\DatabaseDriver\:\:\$credentials type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Drivers/DatabaseDriver.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$build_config\.$#' + identifier: property.notFound + count: 2 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$scheduler_enabled\.$#' + identifier: property.notFound + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$scheduler_mode\.$#' + identifier: property.notFound + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$scheduler_target_service_id\.$#' + identifier: property.notFound + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:variables\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Cannot access offset ''js_build_command'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Cannot access offset ''js_package_manager'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Cannot call method all\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Cannot call method pluck\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^If condition is always false\.$#' + identifier: if.alwaysFalse + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Method App\\Drivers\\Laravel\\LaravelRuntimeDriver\:\:environmentExports\(\) should return array\ but returns array\.$#' + identifier: return.type + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Offset ''command'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Offset ''document_root'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Offset ''health_path'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Offset ''image'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Offset ''js_build_command'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Offset ''js_package_manager'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Offset ''php_version'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Only iterables can be unpacked, mixed given\.$#' + identifier: arrayUnpacking.nonIterable + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Parameter \#1 \$packageManager of method App\\Drivers\\Laravel\\LaravelRuntimeDriver\:\:jsBuildSteps\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Parameter \#2 \$buildCommand of method App\\Drivers\\Laravel\\LaravelRuntimeDriver\:\:jsBuildSteps\(\) expects string\|null, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Parameter \#2 \$haystack of function in_array expects array, array\|string given\.$#' + identifier: argument.type + count: 2 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Using nullsafe property access "\?\-\>process_roles" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 2 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Using nullsafe property access on non\-nullable type App\\Models\\Service\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 2 + path: app/Drivers/Laravel/LaravelRuntimeDriver.php + + - + message: '#^Binary operation "\." between ''pg_isready \-U '' and mixed results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Cannot access property \$name on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Method App\\Drivers\\Postgres\\Postgres18Driver\:\:__construct\(\) has parameter \$credentials with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Method App\\Drivers\\Postgres\\Postgres18Driver\:\:defaultCredentials\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Offset ''database'' on array\{\}\|string on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 2 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Offset ''db'' might not exist on array\|null\.$#' + identifier: offsetAccess.notFound + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Offset ''host'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Offset ''password'' on array\{\}\|string on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 2 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Offset ''port'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Offset ''user'' might not exist on array\|null\.$#' + identifier: offsetAccess.notFound + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Offset ''username'' on array\{\}\|string on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 2 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Parameter \#1 \$arg of function escapeshellarg expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Parameter \#1 \$string of function str expects string\|null, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Part \$this\-\>credentials\[''db''\] \(mixed\) of encapsed string cannot be cast to string\.$#' + identifier: encapsedStringPart.nonString + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Part \$this\-\>credentials\[''user''\] \(mixed\) of encapsed string cannot be cast to string\.$#' + identifier: encapsedStringPart.nonString + count: 1 + path: app/Drivers/Postgres/Postgres18Driver.php + + - + message: '#^Cannot access property \$name on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Drivers/Valkey/Valkey8Driver.php + + - + message: '#^If condition is always false\.$#' + identifier: if.alwaysFalse + count: 1 + path: app/Drivers/Valkey/Valkey8Driver.php + + - + message: '#^Negated boolean expression is always true\.$#' + identifier: booleanNot.alwaysTrue + count: 1 + path: app/Drivers/Valkey/Valkey8Driver.php + + - + message: '#^Offset ''database'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 2 + path: app/Drivers/Valkey/Valkey8Driver.php + + - + message: '#^Offset ''host'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Drivers/Valkey/Valkey8Driver.php + + - + message: '#^Offset ''persistence'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 2 + path: app/Drivers/Valkey/Valkey8Driver.php + + - + message: '#^Offset ''port'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Drivers/Valkey/Valkey8Driver.php + + - + message: '#^Parameter \#1 \$string of function str expects string\|null, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Drivers/Valkey/Valkey8Driver.php + + - + message: '#^Unreachable statement \- code above always terminates\.$#' + identifier: deadCode.unreachable + count: 1 + path: app/Drivers/Valkey/Valkey8Driver.php + + - + message: '#^Method App\\Enums\\BuildArtifactStatus\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/BuildArtifactStatus.php + + - + message: '#^Method App\\Enums\\BuildStrategy\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/BuildStrategy.php + + - + message: '#^Method App\\Enums\\DeployPolicy\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/DeployPolicy.php + + - + message: '#^Method App\\Enums\\EnvironmentAttachmentRole\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/EnvironmentAttachmentRole.php + + - + message: '#^Method App\\Enums\\EnvironmentVariableSource\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/EnvironmentVariableSource.php + + - + message: '#^Method App\\Enums\\FirewallRuleStatus\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/FirewallRuleStatus.php + + - + message: '#^Method App\\Enums\\FirewallRuleType\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/FirewallRuleType.php + + - + message: '#^Method App\\Enums\\OperationKind\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/OperationKind.php + + - + message: '#^Method App\\Enums\\OperationStatus\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/OperationStatus.php + + - + message: '#^Method App\\Enums\\OrganisationRole\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/OrganisationRole.php + + - + message: '#^Method App\\Enums\\ProviderType\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/ProviderType.php + + - + message: '#^Method App\\Enums\\RegistryType\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/RegistryType.php + + - + message: '#^Method App\\Enums\\RepositoryType\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/RepositoryType.php + + - + message: '#^Method App\\Enums\\SchedulerMode\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/SchedulerMode.php + + - + message: '#^Method App\\Enums\\ServerStatus\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/ServerStatus.php + + - + message: '#^Instanceof between App\\Enums\\ServiceCategory and App\\Enums\\ServiceCategory will always evaluate to true\.$#' + identifier: instanceof.alwaysTrue + count: 1 + path: app/Enums/ServiceCategory.php + + - + message: '#^Method App\\Enums\\ServiceCategory\:\:getDescription\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Enums/ServiceCategory.php + + - + message: '#^Method App\\Enums\\ServiceCategory\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/ServiceCategory.php + + - + message: '#^Method App\\Enums\\ServiceEndpointScope\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/ServiceEndpointScope.php + + - + message: '#^Method App\\Enums\\ServiceStatus\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/ServiceStatus.php + + - + message: '#^Method App\\Enums\\ServiceType\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/ServiceType.php + + - + message: '#^Method App\\Enums\\SourceProviderType\:\:toArray\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Enums/SourceProviderType.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:servers\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Call to an undefined method Inertia\\Response\|Inertia\\ResponseFactory\:\:optional\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Cannot call method get\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Cannot call method where\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Cannot call method with\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Method App\\Http\\Controllers\\ApplicationController\:\:create\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Method App\\Http\\Controllers\\ApplicationController\:\:index\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Method App\\Http\\Controllers\\ApplicationController\:\:show\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Parameter \#1 \$application of method App\\Actions\\Applications\\CreateLaravelEnvironment\:\:execute\(\) expects App\\Models\\Application, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Parameter \#1 \$application of method App\\Actions\\Applications\\GenerateDeployKey\:\:execute\(\) expects App\\Models\\Application, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Parameter \#1 \$application of method App\\Actions\\Applications\\VerifyRepositoryAccess\:\:execute\(\) expects App\\Models\\Application, Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ApplicationController.php + + - + message: '#^Cannot access property \$email on App\\Models\\User\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Http/Controllers/Auth/ConfirmablePasswordController.php + + - + message: '#^Cannot call method hasVerifiedEmail\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Auth/EmailVerificationNotificationController.php + + - + message: '#^Cannot call method sendEmailVerificationNotification\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Auth/EmailVerificationNotificationController.php + + - + message: '#^Cannot call method hasVerifiedEmail\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Auth/EmailVerificationPromptController.php + + - + message: '#^Cannot call method forceFill\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Auth/NewPasswordController.php + + - + message: '#^Cannot call method save\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Auth/NewPasswordController.php + + - + message: '#^Parameter \#1 \$key of function __ expects string\|null, mixed given\.$#' + identifier: argument.type + count: 2 + path: app/Http/Controllers/Auth/NewPasswordController.php + + - + message: '#^Parameter \#1 \$user of class Illuminate\\Auth\\Events\\PasswordReset constructor expects Illuminate\\Contracts\\Auth\\Authenticatable, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Auth/NewPasswordController.php + + - + message: '#^Parameter \#1 \$value of static method Illuminate\\Support\\Facades\\Hash\:\:make\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Auth/NewPasswordController.php + + - + message: '#^Cannot call method hasVerifiedEmail\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Auth/VerifyEmailController.php + + - + message: '#^Cannot call method markEmailAsVerified\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Auth/VerifyEmailController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/EnvironmentAttachmentController.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model\:\:environments\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Http/Controllers/EnvironmentAttachmentController.php + + - + message: '#^Cannot access property \$id on mixed\.$#' + identifier: property.nonObject + count: 1 + path: app/Http/Controllers/EnvironmentAttachmentController.php + + - + message: '#^Cannot call method findOrFail\(\) on mixed\.$#' + identifier: method.nonObject + count: 2 + path: app/Http/Controllers/EnvironmentAttachmentController.php + + - + message: '#^Method App\\Http\\Controllers\\EnvironmentAttachmentController\:\:create\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/EnvironmentAttachmentController.php + + - + message: '#^Parameter \$environment of method App\\Actions\\Environments\\AttachManagedService\:\:execute\(\) expects App\\Models\\Environment, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/EnvironmentAttachmentController.php + + - + message: '#^Parameter \$role of method App\\Actions\\Environments\\AttachManagedService\:\:execute\(\) expects App\\Enums\\EnvironmentAttachmentRole, App\\Enums\\EnvironmentAttachmentRole\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/EnvironmentAttachmentController.php + + - + message: '#^Parameter \$service of method App\\Actions\\Environments\\AttachManagedService\:\:execute\(\) expects App\\Models\\Service, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/EnvironmentAttachmentController.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model\:\:environments\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Http/Controllers/EnvironmentController.php + + - + message: '#^Cannot call method findOrFail\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/EnvironmentController.php + + - + message: '#^Cannot call method with\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/EnvironmentController.php + + - + message: '#^Method App\\Http\\Controllers\\EnvironmentController\:\:show\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/EnvironmentController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/EnvironmentMigrationController.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model\:\:environments\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Http/Controllers/EnvironmentMigrationController.php + + - + message: '#^Cannot call method findOrFail\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/EnvironmentMigrationController.php + + - + message: '#^Parameter \#1 \$environment of method App\\Actions\\Environments\\CreateMigrationOperation\:\:execute\(\) expects App\\Models\\Environment, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/EnvironmentMigrationController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/EnvironmentVariableController.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model\:\:environments\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Http/Controllers/EnvironmentVariableController.php + + - + message: '#^Cannot call method findOrFail\(\) on mixed\.$#' + identifier: method.nonObject + count: 2 + path: app/Http/Controllers/EnvironmentVariableController.php + + - + message: '#^Cannot call method updateOrCreate\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/EnvironmentVariableController.php + + - + message: '#^Cannot call method variables\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/EnvironmentVariableController.php + + - + message: '#^Method App\\Http\\Controllers\\EnvironmentVariableController\:\:create\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/EnvironmentVariableController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/EnvironmentWorkerController.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model\:\:environments\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Http/Controllers/EnvironmentWorkerController.php + + - + message: '#^Cannot call method findOrFail\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/EnvironmentWorkerController.php + + - + message: '#^Parameter \#1 \$environment of method App\\Actions\\Environments\\CreateLaravelWorkerService\:\:execute\(\) expects App\\Models\\Environment, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/EnvironmentWorkerController.php + + - + message: '#^Method App\\Http\\Controllers\\OnboardingController\:\:show\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/OnboardingController.php + + - + message: '#^Method App\\Http\\Controllers\\OrganisationController\:\:show\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Http/Controllers/OrganisationController.php + + - + message: '#^Cannot access offset ''server_id'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Http/Controllers/ProvisionCallback.php + + - + message: '#^Cannot access property \$id on App\\Models\\Server\|Illuminate\\Database\\Eloquent\\Collection\\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Http/Controllers/ProvisionCallback.php + + - + message: '#^Cannot access property \$ipv4 on App\\Models\\Server\|Illuminate\\Database\\Eloquent\\Collection\\|null\.$#' + identifier: property.nonObject + count: 3 + path: app/Http/Controllers/ProvisionCallback.php + + - + message: '#^Cannot access property \$ipv6 on App\\Models\\Server\|Illuminate\\Database\\Eloquent\\Collection\\|null\.$#' + identifier: property.nonObject + count: 3 + path: app/Http/Controllers/ProvisionCallback.php + + - + message: '#^Cannot access property \$organisation on App\\Models\\Server\|Illuminate\\Database\\Eloquent\\Collection\\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Http/Controllers/ProvisionCallback.php + + - + message: '#^Cannot call method each\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/ProvisionCallback.php + + - + message: '#^Cannot call method servers\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/ProvisionCallback.php + + - + message: '#^Cannot call method update\(\) on App\\Models\\Server\|Illuminate\\Database\\Eloquent\\Collection\\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/ProvisionCallback.php + + - + message: '#^Method App\\Http\\Controllers\\ProvisionCallback\:\:__invoke\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Http/Controllers/ProvisionCallback.php + + - + message: '#^Parameter \#1 \$ip of static method App\\Support\\Ip\:\:inNetwork\(\) expects string, string\|null given\.$#' + identifier: argument.type + count: 2 + path: app/Http/Controllers/ProvisionCallback.php + + - + message: '#^Parameter \#1 \$server of class App\\Events\\Servers\\ServerProvisioned constructor expects App\\Models\\Server, App\\Models\\Server\|Illuminate\\Database\\Eloquent\\Collection\\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ProvisionCallback.php + + - + message: '#^Cannot access offset ''hostname'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Http/Controllers/ProvisionScript.php + + - + message: '#^Cannot access offset ''server_id'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Http/Controllers/ProvisionScript.php + + - + message: '#^Cannot access offset ''sudo_password'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Http/Controllers/ProvisionScript.php + + - + message: '#^Method App\\Http\\Controllers\\ProvisionScript\:\:__invoke\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Http/Controllers/ProvisionScript.php + + - + message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, mixed given\.$#' + identifier: argument.type + count: 3 + path: app/Http/Controllers/ProvisionScript.php + + - + message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, string\|false given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ProvisionScript.php + + - + message: '#^Parameter \#3 \$subject of function str_replace expects array\\|string, string\|false given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ProvisionScript.php + + - + message: '#^Method App\\Http\\Controllers\\RegistryController\:\:create\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/RegistryController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$external_id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 2 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Binary operation "\." between mixed and ''\.images'' results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Binary operation "\." between mixed and ''\.locations'' results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Binary operation "\." between mixed and ''\.serverTypes'' results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Call to an undefined method App\\Models\\Provider\|Illuminate\\Database\\Eloquent\\Collection\\:\:service\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Method App\\Http\\Controllers\\ServerController\:\:create\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Method App\\Http\\Controllers\\ServerController\:\:index\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Method App\\Http\\Controllers\\ServerController\:\:show\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Method App\\Http\\Controllers\\ServerController\:\:store\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Method Illuminate\\Database\\Eloquent\\Collection\\:\:load\(\) invoked with 3 parameters, 1 required\.$#' + identifier: arguments.count + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Parameter \$image of method App\\Services\\ServerProviders\\ServerProviderService\:\:createServer\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Parameter \$location of method App\\Services\\ServerProviders\\ServerProviderService\:\:createServer\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Parameter \$networkId of method App\\Services\\ServerProviders\\ServerProviderService\:\:createServer\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Parameter \$networkZone of method App\\Services\\ServerProviders\\ServerProviderService\:\:createNetwork\(\) expects string\|null, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Parameter \$server of class App\\Jobs\\Servers\\WaitForServerToConnect constructor expects App\\Models\\Server, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Parameter \$serverType of method App\\Services\\ServerProviders\\ServerProviderService\:\:createServer\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Part \$networkZone \(mixed\) of encapsed string cannot be cast to string\.$#' + identifier: encapsedStringPart.nonString + count: 1 + path: app/Http/Controllers/ServerController.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: app/Http/Controllers/ServiceController.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Collection\\|Illuminate\\Database\\Eloquent\\Model\:\:update\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Http/Controllers/ServiceController.php + + - + message: '#^Cannot access property \$id on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Http/Controllers/ServiceController.php + + - + message: '#^Method App\\Http\\Controllers\\ServiceController\:\:create\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/ServiceController.php + + - + message: '#^Method App\\Http\\Controllers\\ServiceController\:\:edit\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/ServiceController.php + + - + message: '#^Method App\\Http\\Controllers\\ServiceController\:\:show\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/ServiceController.php + + - + message: '#^Parameter \$category of method App\\Actions\\Services\\CreateService\:\:execute\(\) expects App\\Enums\\ServiceCategory, App\\Enums\\ServiceCategory\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ServiceController.php + + - + message: '#^Parameter \$name of method App\\Actions\\Services\\CreateService\:\:execute\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ServiceController.php + + - + message: '#^Parameter \$type of method App\\Actions\\Services\\CreateService\:\:execute\(\) expects App\\Enums\\ServiceType, App\\Enums\\ServiceType\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ServiceController.php + + - + message: '#^Parameter \$version of method App\\Actions\\Services\\CreateService\:\:execute\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/ServiceController.php + + - + message: '#^Call to function abort_unless\(\) with false and 404 will always evaluate to false\.$#' + identifier: function.impossibleType + count: 1 + path: app/Http/Controllers/ServiceUpdateController.php + + - + message: '#^Call to function in_array\(\) with arguments string, array\{App\\Enums\\ServiceType\:\:POSTGRES, App\\Enums\\ServiceType\:\:VALKEY\} and true will always evaluate to false\.$#' + identifier: function.impossibleType + count: 1 + path: app/Http/Controllers/ServiceUpdateController.php + + - + message: '#^Method App\\Http\\Controllers\\ServiceUpdateController\:\:create\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/ServiceUpdateController.php + + - + message: '#^Offset ''backup_enabled'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Http/Controllers/ServiceUpdateController.php + + - + message: '#^Cannot access offset ''password'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Http/Controllers/Settings/PasswordController.php + + - + message: '#^Cannot call method update\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Settings/PasswordController.php + + - + message: '#^Parameter \#1 \$value of static method Illuminate\\Support\\Facades\\Hash\:\:make\(\) expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Http/Controllers/Settings/PasswordController.php + + - + message: '#^Cannot access property \$email_verified_at on App\\Models\\User\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Http/Controllers/Settings/ProfileController.php + + - + message: '#^Cannot call method delete\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Settings/ProfileController.php + + - + message: '#^Cannot call method fill\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Settings/ProfileController.php + + - + message: '#^Cannot call method isDirty\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Settings/ProfileController.php + + - + message: '#^Cannot call method organisations\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Settings/ProfileController.php + + - + message: '#^Cannot call method ownedOrganisations\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Settings/ProfileController.php + + - + message: '#^Cannot call method save\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Controllers/Settings/ProfileController.php + + - + message: '#^Method App\\Http\\Controllers\\SourceProviderController\:\:create\(\) should return Inertia\\Response but returns Inertia\\Response\|Inertia\\ResponseFactory\.$#' + identifier: return.type + count: 1 + path: app/Http/Controllers/SourceProviderController.php + + - + message: '#^Method App\\Http\\Integrations\\Requests\\Hetzner\\Networks\\CreateNetworkRequest\:\:defaultBody\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Http/Integrations/Requests/Hetzner/Networks/CreateNetworkRequest.php + + - + message: '#^Method App\\Http\\Integrations\\Requests\\Hetzner\\Networks\\GetNetworksRequest\:\:defaultBody\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Http/Integrations/Requests/Hetzner/Networks/GetNetworksRequest.php + + - + message: '#^Method App\\Http\\Integrations\\Requests\\Hetzner\\Servers\\CreateServerRequest\:\:__construct\(\) has parameter \$networks with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Http/Integrations/Requests/Hetzner/Servers/CreateServerRequest.php + + - + message: '#^Method App\\Http\\Integrations\\Requests\\Hetzner\\Servers\\CreateServerRequest\:\:defaultBody\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Http/Integrations/Requests/Hetzner/Servers/CreateServerRequest.php + + - + message: '#^Method App\\Http\\Middleware\\HandleInertiaRequests\:\:share\(\) should return array\ but returns array\.$#' + identifier: return.type + count: 1 + path: app/Http/Middleware/HandleInertiaRequests.php + + - + message: '#^Cannot access property \$id on App\\Models\\User\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Http/Requests/Settings/ProfileUpdateRequest.php + + - + message: '#^Cannot access offset ''versions'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Http/Requests/StoreServiceRequest.php + + - + message: '#^Cannot access offset mixed on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 3 + path: app/Http/Requests/StoreServiceRequest.php + + - + message: '#^Cannot call method add\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Requests/StoreServiceRequest.php + + - + message: '#^Cannot call method errors\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Http/Requests/StoreServiceRequest.php + + - + message: '#^Method App\\Http\\Requests\\StoreServiceRequest\:\:after\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: app/Http/Requests/StoreServiceRequest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 2 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$serviceSlice\.$#' + identifier: property.notFound + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$steps\.$#' + identifier: property.notFound + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:steps\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Cannot access property \$container_name on mixed\.$#' + identifier: property.nonObject + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Cannot call method create\(\) on mixed\.$#' + identifier: method.nonObject + count: 4 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Cannot call method dispatchJob\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Cannot call method first\(\) on mixed\.$#' + identifier: method.nonObject + count: 3 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Cannot call method operations\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Cannot call method replicas\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 2 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Cannot call method sortBy\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Cannot call method steps\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Cannot cast mixed to int\.$#' + identifier: cast.int + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Match arm comparison between string and App\\Enums\\ServiceType\:\:CADDY is always false\.$#' + identifier: match.alwaysFalse + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Match arm comparison between string and App\\Enums\\ServiceType\:\:LARAVEL is always false\.$#' + identifier: match.alwaysFalse + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Match arm comparison between string and App\\Enums\\ServiceType\:\:POSTGRES is always false\.$#' + identifier: match.alwaysFalse + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Match arm comparison between string and App\\Enums\\ServiceType\:\:VALKEY is always false\.$#' + identifier: match.alwaysFalse + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Match expression does not handle remaining value\: string$#' + identifier: match.unhandled + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Method App\\Jobs\\Environments\\DeployEnvironment\:\:ensureServiceReplicas\(\) should return array\ but returns array\\.$#' + identifier: return.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Method App\\Jobs\\Environments\\DeployEnvironment\:\:gatewayUpstreams\(\) should return array\ but returns array\\.$#' + identifier: return.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Method App\\Jobs\\Environments\\DeployEnvironment\:\:placementServerIds\(\) should return array\ but returns array\\.$#' + identifier: return.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Offset ''migration_timing'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 2 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Offset ''server_ids'' on string\|null on left side of \?\? does not exist\.$#' + identifier: nullCoalesce.offset + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$arg of function escapeshellarg expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$attachment of method App\\Jobs\\Environments\\DeployEnvironment\:\:configureCaddyRouteScript\(\) expects App\\Models\\EnvironmentAttachment, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$attachment of method App\\Jobs\\Environments\\DeployEnvironment\:\:gatewayCutoverSteps\(\) expects App\\Models\\EnvironmentAttachment, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Database\\Eloquent\\Collection\\:\:map\(\) expects callable\(Illuminate\\Database\\Eloquent\\Model, int\)\: array\{priority\: int, target\: string\}, Closure\(App\\Models\\ServiceReplica\)\: array\{priority\: int, target\: string\} given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\\:\:filter\(\) expects \(callable\(Illuminate\\Database\\Eloquent\\Model, int\)\: bool\)\|null, Closure\(App\\Models\\Service\)\: bool given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\\:\:first\(\) expects \(callable\(Illuminate\\Database\\Eloquent\\Model, int\)\: bool\)\|null, Closure\(App\\Models\\Operation\)\: bool given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\\:\:flatMap\(\) expects callable\(Illuminate\\Database\\Eloquent\\Model, int\)\: \(array\\|Illuminate\\Support\\Collection\\), Closure\(App\\Models\\Service\)\: Illuminate\\Support\\Collection\ given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$operation of method App\\Jobs\\Environments\\DeployEnvironment\:\:createServiceDeploySteps\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$operation of method App\\Jobs\\Environments\\DeployEnvironment\:\:dispatchChildOperations\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$parent of method App\\Jobs\\Environments\\DeployEnvironment\:\:createGatewayOperations\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$parent of method App\\Jobs\\Environments\\DeployEnvironment\:\:createReplicaDeployOperations\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$scope of method App\\Jobs\\Environments\\DeployEnvironment\:\:endpointTarget\(\) expects App\\Enums\\ServiceEndpointScope, string given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#1 \$service of method App\\Jobs\\Environments\\DeployEnvironment\:\:serviceKey\(\) expects App\\Models\\Service, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#2 \$haystack of function in_array expects array, array\|string given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#2 \$operation of method App\\Actions\\Environments\\BuildApplicationArtifact\:\:execute\(\) expects App\\Models\\Operation\|null, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \#4 \$imageDigest of method App\\Jobs\\Environments\\DeployEnvironment\:\:createServiceDeploySteps\(\) expects string, string\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Parameter \$consumerReplica of method App\\Actions\\Services\\RegisterServiceEndpoint\:\:execute\(\) expects App\\Models\\ServiceReplica\|null, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Part \$route \(mixed\) of encapsed string cannot be cast to string\.$#' + identifier: encapsedStringPart.nonString + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Strict comparison using \=\=\= between ''pre_switch'' and ''post_switch'' will always evaluate to false\.$#' + identifier: identical.alwaysFalse + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Strict comparison using \=\=\= between ''pre_switch'' and ''pre_switch'' will always evaluate to true\.$#' + identifier: identical.alwaysTrue + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Using nullsafe property access "\?\-\>name" on left side of \?\? is unnecessary\. Use \-\> instead\.$#' + identifier: nullsafe.neverNull + count: 1 + path: app/Jobs/Environments/DeployEnvironment.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:dispatchJob\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Jobs/Services/DeployService.php + + - + message: '#^Parameter \#1 \$steps of method App\\Jobs\\Services\\DeployService\:\:stepsWithComposeUpload\(\) expects array\, array\ given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/DeployService.php + + - + message: '#^Property App\\Jobs\\Services\\DeployService\:\:\$operation \(App\\Models\\Operation\) does not accept Illuminate\\Database\\Eloquent\\Model\.$#' + identifier: assign.propertyType + count: 1 + path: app/Jobs/Services/DeployService.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$server\.$#' + identifier: property.notFound + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$status\.$#' + identifier: property.notFound + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:children\(\)\.$#' + identifier: method.notFound + count: 2 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:steps\(\)\.$#' + identifier: method.notFound + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot access property \$server on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot access property \$server on mixed\.$#' + identifier: property.nonObject + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot access property \$target on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 3 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method dispatchJob\(\) on mixed\.$#' + identifier: method.nonObject + count: 3 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method each\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method first\(\) on mixed\.$#' + identifier: method.nonObject + count: 5 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method get\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method orderBy\(\) on mixed\.$#' + identifier: method.nonObject + count: 4 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method replicas\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method steps\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 2 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method steps\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method update\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 2 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method update\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method where\(\) on mixed\.$#' + identifier: method.nonObject + count: 5 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method whereIn\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Cannot call method with\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\\:\:each\(\) expects callable\(Illuminate\\Database\\Eloquent\\Model, int\)\: mixed, Closure\(App\\Models\\Operation\)\: void given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\\:\:first\(\) expects \(callable\(Illuminate\\Database\\Eloquent\\Model, int\)\: bool\)\|null, Closure\(App\\Models\\Operation\)\: bool given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Parameter \#1 \$callback of method Illuminate\\Support\\Collection\\:\:flatMap\(\) expects callable\(Illuminate\\Database\\Eloquent\\Model, int\)\: \(array\\|Illuminate\\Support\\Collection\\), Closure\(App\\Models\\Service\)\: Illuminate\\Support\\Collection\ given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Parameter \#1 \$operation of method App\\Jobs\\Services\\RunStep\:\:cancelDescendants\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Parameter \#1 \$operation of method App\\Jobs\\Services\\RunStep\:\:cancelPendingSiblingsAndAncestors\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Parameter \#1 \$operation of method App\\Jobs\\Services\\RunStep\:\:cancelPendingSiblingsAndAncestors\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Parameter \#1 \$operation of method App\\Jobs\\Services\\RunStep\:\:completeOperation\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Parameter \#1 \$operation of method App\\Jobs\\Services\\RunStep\:\:completeOperation\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Parameter \#1 \$operation of method App\\Jobs\\Services\\RunStep\:\:dispatchNextChildOperation\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Parameter \#1 \$operation of method App\\Jobs\\Services\\RunStep\:\:dispatchNextOperationAfter\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Parameter \#1 \$operation of method App\\Jobs\\Services\\RunStep\:\:dispatchNextOperationAfter\(\) expects App\\Models\\Operation, Illuminate\\Database\\Eloquent\\Model\|null given\.$#' + identifier: argument.type + count: 1 + path: app/Jobs/Services/RunStep.php + + - + message: '#^Class App\\Models\\Application uses generic trait Illuminate\\Database\\Eloquent\\Factories\\HasFactory but does not specify its types\: TFactory$#' + identifier: missingType.generics + count: 1 + path: app/Models/Application.php + + - + message: '#^Method App\\Models\\Application\:\:environments\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Application.php + + - + message: '#^Method App\\Models\\Application\:\:operations\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\MorphMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Application.php + + - + message: '#^Method App\\Models\\Application\:\:organisation\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Application.php + + - + message: '#^Method App\\Models\\BuildArtifact\:\:builtByOperation\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/BuildArtifact.php + + - + message: '#^Method App\\Models\\BuildArtifact\:\:builtByService\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/BuildArtifact.php + + - + message: '#^Method App\\Models\\BuildArtifact\:\:environment\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/BuildArtifact.php + + - + message: '#^Class App\\Models\\Environment uses generic trait Illuminate\\Database\\Eloquent\\Factories\\HasFactory but does not specify its types\: TFactory$#' + identifier: missingType.generics + count: 1 + path: app/Models/Environment.php + + - + message: '#^Method App\\Models\\Environment\:\:application\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Environment.php + + - + message: '#^Method App\\Models\\Environment\:\:attachments\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Environment.php + + - + message: '#^Method App\\Models\\Environment\:\:buildArtifacts\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Environment.php + + - + message: '#^Method App\\Models\\Environment\:\:operations\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\MorphMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Environment.php + + - + message: '#^Method App\\Models\\Environment\:\:services\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Environment.php + + - + message: '#^Method App\\Models\\Environment\:\:variables\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Environment.php + + - + message: '#^Method App\\Models\\EnvironmentAttachment\:\:environment\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/EnvironmentAttachment.php + + - + message: '#^Method App\\Models\\EnvironmentAttachment\:\:service\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/EnvironmentAttachment.php + + - + message: '#^Method App\\Models\\EnvironmentAttachment\:\:serviceSlice\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/EnvironmentAttachment.php + + - + message: '#^Method App\\Models\\EnvironmentVariable\:\:environment\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/EnvironmentVariable.php + + - + message: '#^Method App\\Models\\EnvironmentVariable\:\:serviceSlice\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/EnvironmentVariable.php + + - + message: '#^Method App\\Models\\FirewallRule\:\:server\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/FirewallRule.php + + - + message: '#^Strict comparison using \=\=\= between string and App\\Enums\\FirewallRuleType\:\:ALLOW will always evaluate to false\.$#' + identifier: identical.alwaysFalse + count: 1 + path: app/Models/FirewallRule.php + + - + message: '#^Strict comparison using \=\=\= between string and App\\Enums\\FirewallRuleType\:\:DENY will always evaluate to false\.$#' + identifier: identical.alwaysFalse + count: 1 + path: app/Models/FirewallRule.php + + - + message: '#^Method App\\Models\\Network\:\:organisation\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Network.php + + - + message: '#^Method App\\Models\\Network\:\:provider\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Network.php + + - + message: '#^Method App\\Models\\Network\:\:servers\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Network.php + + - + message: '#^Cannot call method random\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: app/Models/Operation.php + + - + message: '#^Class App\\Models\\Operation uses generic trait Illuminate\\Database\\Eloquent\\Factories\\HasFactory but does not specify its types\: TFactory$#' + identifier: missingType.generics + count: 1 + path: app/Models/Operation.php + + - + message: '#^Method App\\Models\\Operation\:\:children\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Operation.php + + - + message: '#^Method App\\Models\\Operation\:\:parent\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Operation.php + + - + message: '#^Method App\\Models\\Operation\:\:steps\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Operation.php + + - + message: '#^Method App\\Models\\Operation\:\:target\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\MorphTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Operation.php + + - + message: '#^Property App\\Models\\Operation\:\:\$hash \(string\) does not accept mixed\.$#' + identifier: assign.propertyType + count: 1 + path: app/Models/Operation.php + + - + message: '#^Argument of an invalid type array\|string supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 1 + path: app/Models/OperationStep.php + + - + message: '#^Empty array passed to foreach\.$#' + identifier: foreach.emptyArray + count: 1 + path: app/Models/OperationStep.php + + - + message: '#^Method App\\Models\\OperationStep\:\:errorLogsExcerpt\(\) return type with generic class Illuminate\\Database\\Eloquent\\Casts\\Attribute does not specify its types\: TGet, TSet$#' + identifier: missingType.generics + count: 1 + path: app/Models/OperationStep.php + + - + message: '#^Method App\\Models\\OperationStep\:\:logsExcerpt\(\) return type with generic class Illuminate\\Database\\Eloquent\\Casts\\Attribute does not specify its types\: TGet, TSet$#' + identifier: missingType.generics + count: 1 + path: app/Models/OperationStep.php + + - + message: '#^Method App\\Models\\OperationStep\:\:operation\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/OperationStep.php + + - + message: '#^Parameter \#2 \$replace of function str_replace expects array\\|string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Models/OperationStep.php + + - + message: '#^Part \$key \(mixed\) of encapsed string cannot be cast to string\.$#' + identifier: encapsedStringPart.nonString + count: 1 + path: app/Models/OperationStep.php + + - + message: '#^Property ''error_logs_excerpt'' does not exist in model\.$#' + identifier: rules.modelAppends + count: 1 + path: app/Models/OperationStep.php + + - + message: '#^Property ''logs_excerpt'' does not exist in model\.$#' + identifier: rules.modelAppends + count: 1 + path: app/Models/OperationStep.php + + - + message: '#^Method App\\Models\\Organisation\:\:applications\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Organisation.php + + - + message: '#^Method App\\Models\\Organisation\:\:members\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany does not specify its types\: TRelatedModel, TDeclaringModel, TPivotModel, TAccessor \(2\-4 required\)$#' + identifier: missingType.generics + count: 1 + path: app/Models/Organisation.php + + - + message: '#^Method App\\Models\\Organisation\:\:networks\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Organisation.php + + - + message: '#^Method App\\Models\\Organisation\:\:owner\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Organisation.php + + - + message: '#^Method App\\Models\\Organisation\:\:providers\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Organisation.php + + - + message: '#^Method App\\Models\\Organisation\:\:registries\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Organisation.php + + - + message: '#^Method App\\Models\\Organisation\:\:servers\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Organisation.php + + - + message: '#^Method App\\Models\\Organisation\:\:services\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Organisation.php + + - + message: '#^Method App\\Models\\Organisation\:\:sourceProviders\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Organisation.php + + - + message: '#^Match arm comparison between string and App\\Enums\\ProviderType\:\:HETZNER is always false\.$#' + identifier: match.alwaysFalse + count: 1 + path: app/Models/Provider.php + + - + message: '#^Method App\\Models\\Provider\:\:networks\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Provider.php + + - + message: '#^Method App\\Models\\Provider\:\:servers\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Provider.php + + - + message: '#^Method App\\Models\\Registry\:\:organisation\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Registry.php + + - + message: '#^Method App\\Models\\Server\:\:firewallRules\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Server.php + + - + message: '#^Method App\\Models\\Server\:\:network\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Server.php + + - + message: '#^Method App\\Models\\Server\:\:organisation\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Server.php + + - + message: '#^Method App\\Models\\Server\:\:provider\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Server.php + + - + message: '#^Method App\\Models\\Server\:\:serviceOperations\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasManyThrough does not specify its types\: TRelatedModel, TIntermediateModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Server.php + + - + message: '#^Method App\\Models\\Server\:\:serviceReplicas\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Server.php + + - + message: '#^Method App\\Models\\Server\:\:services\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Server.php + + - + message: '#^Cannot access offset string\|null on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 2 + path: app/Models/Service.php + + - + message: '#^Class App\\Models\\Service uses generic trait Illuminate\\Database\\Eloquent\\Factories\\HasFactory but does not specify its types\: TFactory$#' + identifier: missingType.generics + count: 1 + path: app/Models/Service.php + + - + message: '#^Method App\\Models\\Service\:\:driver\(\) should return App\\Drivers\\Driver but returns object\.$#' + identifier: return.type + count: 1 + path: app/Models/Service.php + + - + message: '#^Method App\\Models\\Service\:\:endpoints\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Service.php + + - + message: '#^Method App\\Models\\Service\:\:environment\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Service.php + + - + message: '#^Method App\\Models\\Service\:\:folderName\(\) return type with generic class Illuminate\\Database\\Eloquent\\Casts\\Attribute does not specify its types\: TGet, TSet$#' + identifier: missingType.generics + count: 1 + path: app/Models/Service.php + + - + message: '#^Method App\\Models\\Service\:\:operations\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\MorphMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Service.php + + - + message: '#^Method App\\Models\\Service\:\:organisation\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Service.php + + - + message: '#^Method App\\Models\\Service\:\:replicas\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Service.php + + - + message: '#^Method App\\Models\\Service\:\:server\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Service.php + + - + message: '#^Method App\\Models\\Service\:\:slices\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/Service.php + + - + message: '#^Parameter \#1 \$class of function class_exists expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Models/Service.php + + - + message: '#^Part \$class \(mixed\) of encapsed string cannot be cast to string\.$#' + identifier: encapsedStringPart.nonString + count: 1 + path: app/Models/Service.php + + - + message: '#^Property App\\Drivers\\DatabaseDriver\:\:\$credentials \(array\|null\) does not accept string\|null\.$#' + identifier: assign.propertyType + count: 1 + path: app/Models/Service.php + + - + message: '#^Method App\\Models\\ServiceEndpoint\:\:service\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceEndpoint.php + + - + message: '#^Method App\\Models\\ServiceEndpoint\:\:serviceReplica\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceEndpoint.php + + - + message: '#^Class App\\Models\\ServiceReplica uses generic trait Illuminate\\Database\\Eloquent\\Factories\\HasFactory but does not specify its types\: TFactory$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceReplica.php + + - + message: '#^Method App\\Models\\ServiceReplica\:\:operation\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceReplica.php + + - + message: '#^Method App\\Models\\ServiceReplica\:\:operations\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\MorphMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceReplica.php + + - + message: '#^Method App\\Models\\ServiceReplica\:\:server\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceReplica.php + + - + message: '#^Method App\\Models\\ServiceReplica\:\:service\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceReplica.php + + - + message: '#^Class App\\Models\\ServiceSlice uses generic trait Illuminate\\Database\\Eloquent\\Factories\\HasFactory but does not specify its types\: TFactory$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceSlice.php + + - + message: '#^Method App\\Models\\ServiceSlice\:\:attachments\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceSlice.php + + - + message: '#^Method App\\Models\\ServiceSlice\:\:environment\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceSlice.php + + - + message: '#^Method App\\Models\\ServiceSlice\:\:operations\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\MorphMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceSlice.php + + - + message: '#^Method App\\Models\\ServiceSlice\:\:service\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/ServiceSlice.php + + - + message: '#^Method App\\Models\\SourceProvider\:\:organisation\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsTo does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/SourceProvider.php + + - + message: '#^Method App\\Models\\User\:\:organisations\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\BelongsToMany does not specify its types\: TRelatedModel, TDeclaringModel, TPivotModel, TAccessor \(2\-4 required\)$#' + identifier: missingType.generics + count: 1 + path: app/Models/User.php + + - + message: '#^Method App\\Models\\User\:\:ownedOrganisations\(\) return type with generic class Illuminate\\Database\\Eloquent\\Relations\\HasMany does not specify its types\: TRelatedModel, TDeclaringModel$#' + identifier: missingType.generics + count: 1 + path: app/Models/User.php + + - + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string + count: 2 + path: app/Services/Compose/ComposeRenderer.php + + - + message: '#^Parameter \#1 \$document of method App\\Services\\Compose\\ComposeRenderer\:\:toYaml\(\) expects array\, array\ given\.$#' + identifier: argument.type + count: 1 + path: app/Services/Compose/ComposeRenderer.php + + - + message: '#^Parameter \#1 \$value of function collect expects Illuminate\\Contracts\\Support\\Arrayable\<\(int\|string\), mixed\>\|iterable\<\(int\|string\), mixed\>\|null, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/Compose/ComposeRenderer.php + + - + message: '#^Unable to resolve the template type TKey in call to function collect$#' + identifier: argument.templateType + count: 1 + path: app/Services/Compose/ComposeRenderer.php + + - + message: '#^Unable to resolve the template type TValue in call to function collect$#' + identifier: argument.templateType + count: 1 + path: app/Services/Compose/ComposeRenderer.php + + - + message: '#^Cannot access offset ''city'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''cores'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''country'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''description'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''disk'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''gross'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 2 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''hourly'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''id'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 4 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''ip_range'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''memory'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''monthly'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''name'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 3 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''network_zone'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''os_flavor'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''os_version'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset ''prices'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 2 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Cannot access offset 0 on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 2 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Method App\\Services\\ServerProviders\\HetznerService\:\:getImages\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#' + identifier: missingType.generics + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Method App\\Services\\ServerProviders\\HetznerService\:\:getLocations\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#' + identifier: missingType.generics + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Method App\\Services\\ServerProviders\\HetznerService\:\:getServerTypes\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#' + identifier: missingType.generics + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \#1 \$value of function collect expects Illuminate\\Contracts\\Support\\Arrayable\<\(int\|string\), mixed\>\|iterable\<\(int\|string\), mixed\>\|null, mixed given\.$#' + identifier: argument.type + count: 4 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$city of class App\\Data\\ServerProviders\\Location constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$cores of class App\\Data\\ServerProviders\\ServerType constructor expects int, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$country of class App\\Data\\ServerProviders\\Location constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$disk of class App\\Data\\ServerProviders\\ServerType constructor expects int, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$id of class App\\Data\\ServerProviders\\CreatedServer constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$id of class App\\Data\\ServerProviders\\Image constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$id of class App\\Data\\ServerProviders\\Location constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$id of class App\\Data\\ServerProviders\\Network constructor expects string, mixed given\.$#' + identifier: argument.type + count: 2 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$id of class App\\Data\\ServerProviders\\ServerType constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$ipRange of class App\\Data\\ServerProviders\\Network constructor expects string, mixed given\.$#' + identifier: argument.type + count: 2 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$ipv4 of class App\\Data\\ServerProviders\\CreatedServer constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$ipv6 of class App\\Data\\ServerProviders\\CreatedServer constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$memory of class App\\Data\\ServerProviders\\ServerType constructor expects int, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$name of class App\\Data\\ServerProviders\\Image constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$name of class App\\Data\\ServerProviders\\Location constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$name of class App\\Data\\ServerProviders\\Network constructor expects string, mixed given\.$#' + identifier: argument.type + count: 2 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$name of class App\\Data\\ServerProviders\\ServerType constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$networkZone of class App\\Data\\ServerProviders\\Location constructor expects string\|null, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$networkZone of class App\\Data\\ServerProviders\\Network constructor expects string\|null, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$osFlavor of class App\\Data\\ServerProviders\\Image constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$osVersion of class App\\Data\\ServerProviders\\Image constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$priceHourly of class App\\Data\\ServerProviders\\ServerType constructor expects float, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$priceMonthly of class App\\Data\\ServerProviders\\ServerType constructor expects float, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$privateIp of class App\\Data\\ServerProviders\\CreatedServer constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$rootPassword of class App\\Data\\ServerProviders\\CreatedServer constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Parameter \$status of class App\\Data\\ServerProviders\\CreatedServer constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Unable to resolve the template type TKey in call to function collect$#' + identifier: argument.templateType + count: 4 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Unable to resolve the template type TValue in call to function collect$#' + identifier: argument.templateType + count: 4 + path: app/Services/ServerProviders/HetznerService.php + + - + message: '#^Method App\\Services\\ServerProviders\\ServerProviderService\:\:getImages\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#' + identifier: missingType.generics + count: 1 + path: app/Services/ServerProviders/ServerProviderService.php + + - + message: '#^Method App\\Services\\ServerProviders\\ServerProviderService\:\:getLocations\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#' + identifier: missingType.generics + count: 1 + path: app/Services/ServerProviders/ServerProviderService.php + + - + message: '#^Method App\\Services\\ServerProviders\\ServerProviderService\:\:getServerTypes\(\) return type with generic class Illuminate\\Support\\Collection does not specify its types\: TKey, TValue$#' + identifier: missingType.generics + count: 1 + path: app/Services/ServerProviders/ServerProviderService.php + + - + message: '#^Cannot access offset int on string\|false\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 2 + path: app/Support/Ip.php + + - + message: '#^Parameter \#1 \$string of function substr expects string, string\|false given\.$#' + identifier: argument.type + count: 2 + path: app/Support/Ip.php + + - + message: '#^Cannot access property \$organisations on App\\Models\\User\|null\.$#' + identifier: property.nonObject + count: 1 + path: routes/web.php + + - + message: '#^Cannot call method name\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: routes/web.php + + - + message: '#^Cannot call method bind\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ApplicationControllerTest.php + + - + message: '#^Cannot call method exists\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ApplicationControllerTest.php + + - + message: '#^Cannot call method services\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ApplicationControllerTest.php + + - + message: '#^Cannot call method where\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ApplicationControllerTest.php + + - + message: '#^Parameter \#1 \$attributes of method Illuminate\\Database\\Eloquent\\Relations\\HasOneOrMany\\>\:\:create\(\) expects array\, array\ given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ApplicationControllerTest.php + + - + message: '#^Cannot call method hasVerifiedEmail\(\) on App\\Models\\User\|null\.$#' + identifier: method.nonObject + count: 2 + path: tests/Feature/Auth/EmailVerificationTest.php + + - + message: '#^Binary operation "\." between ''/reset\-password/'' and mixed results in an error\.$#' + identifier: binaryOp.invalid + count: 1 + path: tests/Feature/Auth/PasswordResetTest.php + + - + message: '#^Cannot access property \$token on mixed\.$#' + identifier: property.nonObject + count: 2 + path: tests/Feature/Auth/PasswordResetTest.php + + - + message: '#^Cannot access property \$password on App\\Models\\User\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/AuthFlowsTest.php + + - + message: '#^Cannot call method update\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 3 + path: tests/Feature/BuildApplicationArtifactTest.php + + - + message: '#^Parameter \#1 \$networkId of method Database\\Factories\\ServerFactory\:\:forNetwork\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/BuildApplicationArtifactTest.php + + - + message: '#^Parameter \#1 \$providerId of method Database\\Factories\\ServerFactory\:\:forProvider\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/BuildApplicationArtifactTest.php + + - + message: '#^Offset ''build_strategy'' does not exist on string\|null\.$#' + identifier: offsetAccess.notFound + count: 2 + path: tests/Feature/BuildArtifactPlanningTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/BuildArtifactPlanningTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/BuildArtifactPlanningTest.php + + - + message: '#^Cannot access property \$command on mixed\.$#' + identifier: property.nonObject + count: 3 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$health_status on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$id on App\\Models\\Operation\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$image_digest on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 2 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$kind on App\\Models\\Operation\|null\.$#' + identifier: property.nonObject + count: 2 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$kind on mixed\.$#' + identifier: property.nonObject + count: 2 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$operation on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 3 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$operation_id on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$order on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$parent on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$script on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 4 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$script on mixed\.$#' + identifier: property.nonObject + count: 9 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$status on App\\Models\\Operation\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$status on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$steps on App\\Models\\Operation\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot access property \$target on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot call method all\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot call method children\(\) on App\\Models\\Operation\|null\.$#' + identifier: method.nonObject + count: 8 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot call method children\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 6 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot call method count\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot call method first\(\) on mixed\.$#' + identifier: method.nonObject + count: 14 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot call method is\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot call method pluck\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot call method steps\(\) on App\\Models\\Operation\|null\.$#' + identifier: method.nonObject + count: 6 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot call method steps\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 5 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot call method steps\(\) on mixed\.$#' + identifier: method.nonObject + count: 5 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Cannot call method where\(\) on mixed\.$#' + identifier: method.nonObject + count: 13 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Parameter \#1 \$haystack of function str_contains expects string, mixed given\.$#' + identifier: argument.type + count: 2 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Parameter \#1 \$networkId of method Database\\Factories\\ServerFactory\:\:forNetwork\(\) expects string, int given\.$#' + identifier: argument.type + count: 5 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Parameter \#1 \$providerId of method Database\\Factories\\ServerFactory\:\:forProvider\(\) expects string, int given\.$#' + identifier: argument.type + count: 5 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Parameter \#2 \$array of function implode expects array\, array\ given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\>\:\:and\(\)$#' + identifier: argument.templateType + count: 2 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 6 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/DeployEnvironmentJobTest.php + + - + message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 2 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Call to an undefined method object\:\:defaultImage\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Call to an undefined method object\:\:defaultPorts\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Call to an undefined method object\:\:environmentSchema\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Call to an undefined method object\:\:firewallRules\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Call to an undefined method object\:\:resourceDefaults\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Call to an undefined method object\:\:serviceType\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Call to an undefined method object\:\:updateBehavior\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Call to an undefined method object\:\:versionTrack\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Cannot access property \$value on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\>\:\:and\(\)$#' + identifier: argument.templateType + count: 4 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 3 + path: tests/Feature/DriverContractTest.php + + - + message: '#^Cannot access offset ''test'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: tests/Feature/Drivers/LaravelRuntimeDriverTest.php + + - + message: '#^Cannot access property \$value on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/EnvironmentAttachmentControllerTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/EnvironmentAttachmentControllerTest.php + + - + message: '#^Cannot access property \$script on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 2 + path: tests/Feature/EnvironmentDeploymentControllerTest.php + + - + message: '#^Cannot access property \$status on App\\Models\\Operation\|null\.$#' + identifier: property.nonObject + count: 2 + path: tests/Feature/EnvironmentDeploymentControllerTest.php + + - + message: '#^Cannot call method steps\(\) on App\\Models\\Operation\|null\.$#' + identifier: method.nonObject + count: 2 + path: tests/Feature/EnvironmentDeploymentControllerTest.php + + - + message: '#^Parameter \#1 \$networkId of method Database\\Factories\\ServerFactory\:\:forNetwork\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/EnvironmentDeploymentControllerTest.php + + - + message: '#^Parameter \#1 \$providerId of method Database\\Factories\\ServerFactory\:\:forProvider\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/EnvironmentDeploymentControllerTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/EnvironmentDeploymentControllerTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/EnvironmentDeploymentControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$kind\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/EnvironmentMigrationControllerTest.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:steps\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/EnvironmentMigrationControllerTest.php + + - + message: '#^Cannot access property \$script on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/EnvironmentMigrationControllerTest.php + + - + message: '#^Cannot call method first\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/EnvironmentMigrationControllerTest.php + + - + message: '#^Unable to resolve the template type TValue in call to function expect$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/EnvironmentMigrationControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$key\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/EnvironmentVariableControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$overridable\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/EnvironmentVariableControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$service_slice_id\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/EnvironmentVariableControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$source\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/EnvironmentVariableControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$value\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/EnvironmentVariableControllerTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 3 + path: tests/Feature/EnvironmentVariableControllerTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/EnvironmentVariableControllerTest.php + + - + message: '#^Unable to resolve the template type TValue in call to function expect$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/EnvironmentVariableControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$config\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/EnvironmentWorkerControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$deploy_policy\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/EnvironmentWorkerControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$process_roles\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/EnvironmentWorkerControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$type\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/EnvironmentWorkerControllerTest.php + + - + message: '#^Cannot access offset ''command'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: tests/Feature/EnvironmentWorkerControllerTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 2 + path: tests/Feature/EnvironmentWorkerControllerTest.php + + - + message: '#^Unable to resolve the template type TValue in call to function expect$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/EnvironmentWorkerControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/KeystoneDomainModelTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$serviceSlice\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/KeystoneDomainModelTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$value\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/KeystoneDomainModelTest.php + + - + message: '#^Calling toBeInstanceOf\(\) on Expectation\; assertion is redundant\.$#' + identifier: pest.expectation.redundant + count: 1 + path: tests/Feature/KeystoneDomainModelTest.php + + - + message: '#^Calling toBeInstanceOf\(\) on Expectation\; assertion is redundant\.$#' + identifier: pest.expectation.redundant + count: 1 + path: tests/Feature/KeystoneDomainModelTest.php + + - + message: '#^Cannot access property \$operation on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/KeystoneDomainModelTest.php + + - + message: '#^Cannot call method is\(\) on mixed\.$#' + identifier: method.nonObject + count: 2 + path: tests/Feature/KeystoneDomainModelTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/KeystoneDomainModelTest.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:driver\(\)\.$#' + identifier: method.notFound + count: 2 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Cannot access property \$config on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 2 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Cannot access property \$deploy_policy on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Cannot access property \$id on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Cannot access property \$process_roles on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Cannot access property \$type on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Cannot call method dockerfileTemplate\(\) on mixed\.$#' + identifier: method.nonObject + count: 3 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Cannot call method driver\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Cannot call method refresh\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 2 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Cannot call method update\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 2 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Only iterables can be unpacked, mixed given\.$#' + identifier: arrayUnpacking.nonIterable + count: 2 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 2 + path: tests/Feature/LaravelEnvironmentDefaultsTest.php + + - + message: '#^Cannot access offset ''database'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Cannot access property \$config on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Cannot access property \$kind on mixed\.$#' + identifier: property.nonObject + count: 3 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Cannot access property \$overridable on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Cannot access property \$script on mixed\.$#' + identifier: property.nonObject + count: 3 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Cannot access property \$source on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Cannot access property \$type on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 2 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Cannot access property \$value on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Cannot call method first\(\) on mixed\.$#' + identifier: method.nonObject + count: 9 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Cannot call method operations\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 6 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Cannot call method steps\(\) on mixed\.$#' + identifier: method.nonObject + count: 3 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 3 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Unable to resolve the template type TValue in call to function expect$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/ManagedAttachmentTest.php + + - + message: '#^Access to an undefined property App\\Models\\OperationStep\:\:\$error_logs_excerpt\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Access to an undefined property App\\Models\\OperationStep\:\:\$logs_excerpt\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Access to an undefined property App\\Models\\Service\:\:\$folder_name\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot access property \$firewallRules on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot access property \$id on mixed\.$#' + identifier: property.nonObject + count: 8 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot access property \$network on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot access property \$organisation on mixed\.$#' + identifier: property.nonObject + count: 2 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot access property \$organisation_id on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot access property \$provider on mixed\.$#' + identifier: property.nonObject + count: 2 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot access property \$servers on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot access property \$serviceOperations on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot access property \$serviceReplicas on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot access property \$services on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot call method is\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 17 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot call method is\(\) on mixed\.$#' + identifier: method.nonObject + count: 5 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Cannot call method sshClient\(\) on mixed\.$#' + identifier: method.nonObject + count: 2 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Function buildOrgServer\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Parameter \#1 \$factory of method Illuminate\\Database\\Eloquent\\Factories\\Factory\\:\:for\(\) expects Illuminate\\Database\\Eloquent\\Factories\\Factory\|Illuminate\\Database\\Eloquent\\Model, mixed given\.$#' + identifier: argument.type + count: 4 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Parameter \#1 \$providerId of method Database\\Factories\\ServerFactory\:\:forProvider\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Unable to resolve the template type TValue in call to function expect$#' + identifier: argument.templateType + count: 3 + path: tests/Feature/ModelRelationshipsTest.php + + - + message: '#^Call to an undefined method Mockery\\ExpectationInterface\|Mockery\\HigherOrderMessage\:\:andReturnNull\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/Models/FirewallRuleTest.php + + - + message: '#^Call to an undefined method Mockery\\ExpectationInterface\|Mockery\\HigherOrderMessage\:\:once\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/Models/FirewallRuleTest.php + + - + message: '#^Cannot access property \$id on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/Models/FirewallRuleTest.php + + - + message: '#^Parameter \#1 \$providerId of method Database\\Factories\\ServerFactory\:\:forProvider\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/Models/FirewallRuleTest.php + + - + message: '#^Unable to resolve the template type TValue in call to function expect$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/Models/FirewallRuleTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/OnboardingControllerTest.php + + - + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string + count: 1 + path: tests/Feature/OnboardingControllerTest.php + + - + message: '#^Parameter \#1 \$providerId of method Database\\Factories\\ServerFactory\:\:forProvider\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/OnboardingControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/ProvisionCallbackTest.php + + - + message: '#^Cannot access property \$status on App\\Models\\Server\|null\.$#' + identifier: property.nonObject + count: 3 + path: tests/Feature/ProvisionCallbackTest.php + + - + message: '#^Cannot cast mixed to string\.$#' + identifier: cast.string + count: 1 + path: tests/Feature/ProvisionCallbackTest.php + + - + message: '#^Parameter \#1 \$providerId of method Database\\Factories\\ServerFactory\:\:forProvider\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ProvisionCallbackTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/ProvisionScriptTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$credentials\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/RegistryControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/RegistryControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$type\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/RegistryControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$url\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/RegistryControllerTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 3 + path: tests/Feature/RegistryControllerTest.php + + - + message: '#^Unable to resolve the template type TValue in call to function expect$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/RegistryControllerTest.php + + - + message: '#^Cannot access offset ''GIT_SSH_COMMAND'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 1 + path: tests/Feature/RepositoryAccessTest.php + + - + message: '#^Cannot access property \$command on mixed\.$#' + identifier: property.nonObject + count: 3 + path: tests/Feature/RepositoryAccessTest.php + + - + message: '#^Cannot access property \$environment on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/RepositoryAccessTest.php + + - + message: '#^Parameter \#1 \$haystack of function str_contains expects string, mixed given\.$#' + identifier: argument.type + count: 3 + path: tests/Feature/RepositoryAccessTest.php + + - + message: '#^Parameter \#2 \$array of function implode expects array\, array\ given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/RepositoryAccessTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$external_id\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/ServerControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 3 + path: tests/Feature/ServerControllerTest.php + + - + message: '#^Call to an undefined method Mockery\\ExpectationInterface\|Mockery\\HigherOrderMessage\:\:andReturn\(\)\.$#' + identifier: method.notFound + count: 3 + path: tests/Feature/ServerControllerTest.php + + - + message: '#^Call to an undefined method Mockery\\ExpectationInterface\|Mockery\\HigherOrderMessage\:\:andReturnSelf\(\)\.$#' + identifier: method.notFound + count: 3 + path: tests/Feature/ServerControllerTest.php + + - + message: '#^Call to an undefined method Mockery\\ExpectationInterface\|Mockery\\HigherOrderMessage\:\:never\(\)\.$#' + identifier: method.notFound + count: 1 + path: tests/Feature/ServerControllerTest.php + + - + message: '#^Call to an undefined method Mockery\\ExpectationInterface\|Mockery\\HigherOrderMessage\:\:once\(\)\.$#' + identifier: method.notFound + count: 3 + path: tests/Feature/ServerControllerTest.php + + - + message: '#^Cannot call method andReturn\(\) on mixed\.$#' + identifier: method.nonObject + count: 3 + path: tests/Feature/ServerControllerTest.php + + - + message: '#^Parameter \#1 \$organisation of method Database\\Factories\\ProviderFactory\:\:forOrganisation\(\) expects App\\Models\\Organisation\|string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ServerControllerTest.php + + - + message: '#^Parameter \$networkId of class App\\Data\\ServerProviders\\CreatedServer constructor expects string, mixed given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ServerControllerTest.php + + - + message: '#^Variable \$user in PHPDoc tag @var does not exist\.$#' + identifier: varTag.variableNotFound + count: 1 + path: tests/Feature/ServerControllerTest.php + + - + message: '#^Call to an undefined method Mockery\\ExpectationInterface\|Mockery\\HigherOrderMessage\:\:andReturn\(\)\.$#' + identifier: method.notFound + count: 2 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Cannot access offset ''organisation'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 19 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Cannot access offset ''server'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 23 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Cannot access offset ''user'' on mixed\.$#' + identifier: offsetAccess.nonOffsetAccessible + count: 11 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Cannot access property \$id on mixed\.$#' + identifier: property.nonObject + count: 39 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Cannot call method andReturn\(\) on mixed\.$#' + identifier: method.nonObject + count: 3 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Cannot call method once\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Cannot call method shouldReceive\(\) on mixed\.$#' + identifier: method.nonObject + count: 3 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Cannot call method withArgs\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Function setupTestEnvironment\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Parameter \#1 \$factory of method Illuminate\\Database\\Eloquent\\Factories\\Factory\\:\:for\(\) expects Illuminate\\Database\\Eloquent\\Factories\\Factory\|Illuminate\\Database\\Eloquent\\Model, mixed given\.$#' + identifier: argument.type + count: 2 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Parameter \#1 \$user of function Pest\\Laravel\\actingAs expects Illuminate\\Contracts\\Auth\\Authenticatable, mixed given\.$#' + identifier: argument.type + count: 3 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Parameter \#1 \$user of method Illuminate\\Foundation\\Testing\\TestCase\:\:actingAs\(\) expects Illuminate\\Contracts\\Auth\\Authenticatable, mixed given\.$#' + identifier: argument.type + count: 8 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Parameter \$server of method App\\Actions\\Services\\CreateService\:\:execute\(\) expects App\\Models\\Server, mixed given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ServiceControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 3 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$status\.$#' + identifier: property.notFound + count: 4 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Call to an undefined method Illuminate\\Database\\Eloquent\\Model\:\:steps\(\)\.$#' + identifier: method.notFound + count: 4 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Cannot access property \$kind on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Cannot access property \$name on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Cannot access property \$script on mixed\.$#' + identifier: property.nonObject + count: 5 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Cannot access property \$status on mixed\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Cannot call method create\(\) on mixed\.$#' + identifier: method.nonObject + count: 3 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Cannot call method first\(\) on mixed\.$#' + identifier: method.nonObject + count: 4 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Cannot call method implode\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Cannot call method orderBy\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Cannot call method pluck\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Cannot call method steps\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 4 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Cannot call method where\(\) on mixed\.$#' + identifier: method.nonObject + count: 2 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Parameter \#1 \$networkId of method Database\\Factories\\ServerFactory\:\:forNetwork\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Parameter \#1 \$providerId of method Database\\Factories\\ServerFactory\:\:forProvider\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Parameter \#1 \$step of class App\\Jobs\\Services\\RunStep constructor expects App\\Models\\OperationStep, mixed given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 3 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Unable to resolve the template type TValue in call to function expect$#' + identifier: argument.templateType + count: 2 + path: tests/Feature/ServiceDeploymentOperationTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$id\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/ServiceEndpointTest.php + + - + message: '#^Function endpointTestServer\(\) has parameter \$attributes with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/Feature/ServiceEndpointTest.php + + - + message: '#^Parameter \#1 \$attributes of method Illuminate\\Database\\Eloquent\\Factories\\Factory\\:\:create\(\) expects array\\|\(callable\(array\\)\: array\\), non\-empty\-array\ given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ServiceEndpointTest.php + + - + message: '#^Parameter \#1 \$networkId of method Database\\Factories\\ServerFactory\:\:forNetwork\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ServiceImageDigestTest.php + + - + message: '#^Parameter \#1 \$providerId of method Database\\Factories\\ServerFactory\:\:forProvider\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ServiceImageDigestTest.php + + - + message: '#^Cannot access property \$kind on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 1 + path: tests/Feature/ServiceUpdateControllerTest.php + + - + message: '#^Cannot call method exists\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ServiceUpdateControllerTest.php + + - + message: '#^Cannot call method steps\(\) on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ServiceUpdateControllerTest.php + + - + message: '#^Cannot call method where\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Feature/ServiceUpdateControllerTest.php + + - + message: '#^Function serviceUpdateFixture\(\) has parameter \$serviceConfig with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/Feature/ServiceUpdateControllerTest.php + + - + message: '#^Parameter \#1 \$networkId of method Database\\Factories\\ServerFactory\:\:forNetwork\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ServiceUpdateControllerTest.php + + - + message: '#^Parameter \#1 \$providerId of method Database\\Factories\\ServerFactory\:\:forProvider\(\) expects string, int given\.$#' + identifier: argument.type + count: 1 + path: tests/Feature/ServiceUpdateControllerTest.php + + - + message: '#^Unable to resolve the template type TValue in call to function expect$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/ServiceUpdateControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$name\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/SourceProviderControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$type\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/SourceProviderControllerTest.php + + - + message: '#^Access to an undefined property Illuminate\\Database\\Eloquent\\Model\:\:\$url\.$#' + identifier: property.notFound + count: 1 + path: tests/Feature/SourceProviderControllerTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 2 + path: tests/Feature/SourceProviderControllerTest.php + + - + message: '#^Unable to resolve the template type TValue in call to function expect$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/SourceProviderControllerTest.php + + - + message: '#^Cannot access property \$script on Illuminate\\Database\\Eloquent\\Model\|null\.$#' + identifier: property.nonObject + count: 5 + path: tests/Feature/StatefulServiceUpdateTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\>\:\:and\(\)$#' + identifier: argument.templateType + count: 1 + path: tests/Feature/StatefulServiceUpdateTest.php + + - + message: '#^Unable to resolve the template type TAndValue in call to method Pest\\Expectation\\:\:and\(\)$#' + identifier: argument.templateType + count: 4 + path: tests/Feature/StatefulServiceUpdateTest.php + + - + message: '#^Function validateUpdate\(\) has parameter \$payload with no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/Feature/UpdateServiceRequestTest.php + + - + message: '#^Function validateUpdate\(\) return type has no value type specified in iterable type array\.$#' + identifier: missingType.iterableValue + count: 1 + path: tests/Feature/UpdateServiceRequestTest.php + + - + message: '#^Cannot call method toBe\(\) on mixed\.$#' + identifier: method.nonObject + count: 1 + path: tests/Pest.php + + - + message: '#^Function something\(\) has no return type specified\.$#' + identifier: missingType.return + count: 1 + path: tests/Pest.php + + - + message: '#^Undefined variable\: \$this$#' + identifier: variable.undefined + count: 1 + path: tests/Pest.php + + - + message: '#^Parameter \#1 \.\.\.\$data of method Pest\\PendingCalls\\TestCall\:\:with\(\) expects array\\|string\>\|Closure\|string, array\{App\\Enums\\ServiceCategory\:\:APPLICATION, App\\Enums\\ServiceCategory\:\:DATABASE, App\\Enums\\ServiceCategory\:\:GATEWAY, App\\Enums\\ServiceCategory\:\:STORAGE, App\\Enums\\ServiceCategory\:\:CACHE, App\\Enums\\ServiceCategory\:\:BUILDER\} given\.$#' + identifier: argument.type + count: 1 + path: tests/Unit/Enums/ServiceCategoryTest.php + + - + message: '#^Calling toBeTrue\(\) on Expectation\; assertion is redundant\.$#' + identifier: pest.expectation.redundant + count: 1 + path: tests/Unit/ExampleTest.php diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 0000000..361e25a --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,14 @@ +includes: + - vendor/larastan/larastan/extension.neon + - vendor/mrpunyapal/peststan/extension.neon + - phpstan-baseline.neon + +parameters: + peststan: + testCaseClass: Tests\TestCase + pestConfigFiles: [tests/Pest.php] + level: max + paths: + - app + - routes + - tests diff --git a/phpunit.xml b/phpunit.xml index 7eef87f..9807ca8 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -16,6 +16,19 @@ app + + app/Console + app/Data + app/Http/Integrations + app/Actions/Servers/SyncUfwRules.php + app/Actions/FirewallRules/InstallFirewallRule.php + app/Actions/FirewallRules/UninstallFirewallRule.php + app/Services/Operations/SshRemoteCommandRunner.php + app/Services/ServerProviders/HetznerService.php + app/Jobs/Servers/ProvisionServer.php + app/Jobs/Servers/WaitForServerToConnect.php + app/Actions/Applications/GenerateDeployKey.php + diff --git a/resources/css/app.css b/resources/css/app.css index 391516b..4b33902 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -5,7 +5,8 @@ body, html { --font-sans: - 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji'; + "Instrument Sans", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", + "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; } @layer base { diff --git a/resources/js/app.ts b/resources/js/app.ts index 5670d9e..62f589c 100644 --- a/resources/js/app.ts +++ b/resources/js/app.ts @@ -1,14 +1,14 @@ -import '../css/app.css'; +import "../css/app.css"; -import { createInertiaApp } from '@inertiajs/vue3'; -import { resolvePageComponent } from 'laravel-vite-plugin/inertia-helpers'; -import type { DefineComponent } from 'vue'; -import { createApp, h } from 'vue'; -import { ZiggyVue } from 'ziggy-js'; -import { initializeTheme } from './composables/useAppearance'; +import { createInertiaApp } from "@inertiajs/vue3"; +import { resolvePageComponent } from "laravel-vite-plugin/inertia-helpers"; +import type { DefineComponent } from "vue"; +import { createApp, h } from "vue"; +import { ZiggyVue } from "ziggy-js"; +import { initializeTheme } from "./composables/useAppearance"; // Extend ImportMeta interface for Vite... -declare module 'vite/client' { +declare module "vite/client" { interface ImportMetaEnv { readonly VITE_APP_NAME: string; [key: string]: string | boolean | undefined; @@ -20,11 +20,15 @@ declare module 'vite/client' { } } -const appName = import.meta.env.VITE_APP_NAME || 'Laravel'; +const appName = import.meta.env.VITE_APP_NAME || "Laravel"; createInertiaApp({ title: (title) => `${title} - ${appName}`, - resolve: (name) => resolvePageComponent(`./pages/${name}.vue`, import.meta.glob('./pages/**/*.vue')), + resolve: (name) => + resolvePageComponent( + `./pages/${name}.vue`, + import.meta.glob("./pages/**/*.vue"), + ), setup({ el, App, props, plugin }) { createApp({ render: () => h(App, props) }) .use(plugin) @@ -32,7 +36,7 @@ createInertiaApp({ .mount(el); }, progress: { - color: '#4B5563', + color: "#4B5563", }, }); diff --git a/resources/js/components/AppContent.vue b/resources/js/components/AppContent.vue index 96e3d2a..84ed588 100644 --- a/resources/js/components/AppContent.vue +++ b/resources/js/components/AppContent.vue @@ -1,9 +1,9 @@ diff --git a/resources/js/components/AppSidebar.vue b/resources/js/components/AppSidebar.vue index f40612f..4371384 100644 --- a/resources/js/components/AppSidebar.vue +++ b/resources/js/components/AppSidebar.vue @@ -1,17 +1,25 @@