Ubah dari Swagger ke Dedoc lalu buat API Ticket dan TicketType

This commit is contained in:
Wian Drs
2026-06-20 00:12:19 +07:00
parent 2f805a233d
commit 2dc461ae89
1283 changed files with 36405 additions and 89470 deletions
-20
View File
@@ -1,20 +0,0 @@
<?php
namespace App\Docs;
use OpenApi\Attributes as OA;
#[OA\Info(
version: '1.0.0',
title: 'Services Core API',
description: 'API Backend Services Core'
)]
#[OA\Server(
url: 'http://127.0.0.1:8000',
description: 'Local Development Server'
)]
class OpenApiSpec
{
}
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers;
use App\Traits\ApiResponse;
class ApiController extends Controller
{
use ApiResponse;
}
-28
View File
@@ -5,37 +5,9 @@ namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use OpenApi\Attributes as OA;
class AuthController extends Controller
{
#[OA\Post(
path: "/api/login",
summary: "Login User",
tags: ["Authentication"]
)]
#[OA\RequestBody(
required: true,
content: new OA\JsonContent(
required: ["email", "password"],
properties: [
new OA\Property(
property: "email",
type: "string",
example: "admin@test.co.id"
),
new OA\Property(
property: "password",
type: "string",
example: "123456"
)
]
)
)]
#[OA\Response(
response: 200,
description: "Login Success"
)]
public function login(Request $request)
{
@@ -0,0 +1,70 @@
<?php
namespace App\Http\Controllers\Ticket;
use App\Http\Controllers\ApiController;
use App\Http\Requests\Ticket\StoreTicketRequest;
use App\Http\Requests\Ticket\UpdateTicketRequest;
use App\Http\Resources\Ticket\TicketResource;
use App\Models\Ticket;
use App\Services\Ticket\TicketService;
use Illuminate\Http\Request;
class TicketController extends ApiController
{
public function __construct(
protected TicketService $service
) {}
public function index(Request $request)
{
$tickets = Ticket::latest()->paginate(
$request->get('per_page', 10)
);
return $this->success($tickets);
}
public function store(StoreTicketRequest $request)
{
$ticket = $this->service->create(
$request->validated()
);
return $this->created(
new TicketResource($ticket),
'Ticket berhasil dibuat'
);
}
public function show(Ticket $ticket)
{
return $this->success(
new TicketResource($ticket)
);
}
public function update(
UpdateTicketRequest $request,
Ticket $ticket
) {
$ticket = $this->service->update(
$ticket,
$request->validated()
);
return $this->updated(
new TicketResource($ticket),
'Ticket berhasil diperbarui'
);
}
public function destroy(Ticket $ticket)
{
$this->service->delete($ticket);
return $this->deleted(
'Ticket berhasil dibatalkan'
);
}
}
@@ -0,0 +1,70 @@
<?php
namespace App\Http\Controllers\Ticket;
use App\Http\Controllers\ApiController;
use App\Http\Requests\TicketType\StoreTicketTypeRequest;
use App\Http\Requests\TicketType\UpdateTicketTypeRequest;
use App\Http\Resources\TicketType\TicketTypeResource;
use App\Models\TicketType;
use App\Services\Ticket\TicketTypeService;
use Illuminate\Http\Request;
class TicketTypeController extends ApiController
{
public function __construct(
protected TicketTypeService $service
) {}
public function index(Request $request)
{
$data = TicketType::latest()->paginate(
$request->get('per_page', 10)
);
return $this->success($data);
}
public function store(StoreTicketTypeRequest $request)
{
$type = $this->service->create(
$request->validated()
);
return $this->created(
new TicketTypeResource($type),
'Ticket Type berhasil dibuat'
);
}
public function show(TicketType $ticket_type)
{
return $this->success(
new TicketTypeResource($ticket_type)
);
}
public function update(
UpdateTicketTypeRequest $request,
TicketType $ticket_type
) {
$type = $this->service->update(
$ticket_type,
$request->validated()
);
return $this->updated(
new TicketTypeResource($type),
'Ticket Type berhasil diupdate'
);
}
public function destroy(TicketType $ticket_type)
{
$this->service->delete($ticket_type);
return $this->deleted(
'Ticket Type berhasil dihapus'
);
}
}
@@ -0,0 +1,33 @@
<?php
namespace App\Http\Requests\Ticket;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StoreTicketRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'ticket_type_id' => 'required|integer',
'customer_id' => 'nullable|integer',
'title' => 'required|string|max:255',
'description' => 'nullable|string',
'priority' => 'required|in:low,medium,high,critical'
];
}
}
@@ -0,0 +1,34 @@
<?php
namespace App\Http\Requests\Ticket;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class UpdateTicketRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'ticket_type_id' => 'sometimes|integer',
'customer_id' => 'nullable|integer',
'title' => 'sometimes|string|max:255',
'description' => 'nullable|string',
'priority' => 'sometimes|in:low,medium,high,critical',
'status' => 'sometimes|in:draft,open,approved,assigned,progress,pending,resolved,closed,cancelled,rejected'
];
}
}
@@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests\TicketType;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class StoreTicketTypeRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'code' => 'required|string|max:50|unique:ticket_types,code',
'name' => 'required|string|max:100',
'need_approval' => 'boolean',
'sla_minutes' => 'nullable|integer'
];
}
}
@@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests\TicketType;
use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Foundation\Http\FormRequest;
class UpdateTicketTypeRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'code' => 'sometimes|string|max:50|unique:ticket_types,code,' . $this->route('ticket_type'),
'name' => 'sometimes|string|max:100',
'need_approval' => 'sometimes|boolean',
'sla_minutes' => 'nullable|integer'
];
}
}
@@ -0,0 +1,31 @@
<?php
namespace App\Http\Resources\Ticket;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class TicketResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'ticket_no' => $this->ticket_no,
'ticket_type_id' => $this->ticket_type_id,
'customer_id' => $this->customer_id,
'title' => $this->title,
'description' => $this->description,
'priority' => $this->priority,
'status' => $this->status,
'created_by' => $this->created_by,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
}
@@ -0,0 +1,27 @@
<?php
namespace App\Http\Resources\TicketType;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
class TicketTypeResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @return array<string, mixed>
*/
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'code' => $this->code,
'name' => $this->name,
'need_approval' => $this->need_approval,
'sla_minutes' => $this->sla_minutes,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
];
}
}
+10 -1
View File
@@ -6,5 +6,14 @@ use Illuminate\Database\Eloquent\Model;
class Ticket extends Model
{
//
protected $fillable = [
'ticket_no',
'ticket_type_id',
'customer_id',
'title',
'description',
'priority',
'status',
'created_by',
];
}
+11 -1
View File
@@ -6,5 +6,15 @@ use Illuminate\Database\Eloquent\Model;
class TicketLog extends Model
{
//
public $timestamps = false;
protected $fillable = [
'ticket_id',
'user_id',
'activity',
'notes',
'latitude',
'longitude',
'created_at'
];
}
+12 -1
View File
@@ -6,5 +6,16 @@ use Illuminate\Database\Eloquent\Model;
class TicketType extends Model
{
//
protected $table = 'ticket_types';
protected $fillable = [
'code',
'name',
'need_approval',
'sla_minutes'
];
protected $casts = [
'need_approval' => 'boolean',
];
}
+79
View File
@@ -0,0 +1,79 @@
<?php
namespace App\Services\Ticket;
use App\Models\Ticket;
use App\Models\TicketLog;
use Illuminate\Support\Facades\DB;
class TicketService
{
public function create(array $data): Ticket
{
return DB::transaction(function () use ($data) {
$ticket = Ticket::create([
'ticket_no' => $this->generateTicketNo(),
'ticket_type_id' => $data['ticket_type_id'],
'customer_id' => $data['customer_id'] ?? null,
'title' => $data['title'],
'description' => $data['description'] ?? null,
'priority' => $data['priority'],
'status' => 'open',
'created_by' => 1
]);
TicketLog::create([
'ticket_id' => $ticket->id,
'user_id' => 1,
'activity' => 'Ticket Created',
'notes' => 'Ticket dibuat oleh sistem',
'created_at'=> now()
]);
return $ticket;
});
}
public function update(Ticket $ticket, array $data): Ticket
{
$ticket->update($data);
return $ticket->fresh();
}
public function delete(Ticket $ticket): Ticket
{
$ticket->update([
'status' => 'cancelled'
]);
return $ticket;
}
private function generateTicketNo(): string
{
$prefix = 'TCK-' . now()->format('Ym');
$lastTicket = Ticket::where(
'ticket_no',
'like',
$prefix . '%'
)
->latest('id')
->first();
$number = 1;
if ($lastTicket) {
$number = ((int) substr($lastTicket->ticket_no, -6)) + 1;
}
return $prefix . '-' . str_pad(
$number,
6,
'0',
STR_PAD_LEFT
);
}
}
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace App\Services\Ticket;
use App\Models\TicketType;
class TicketTypeService
{
public function create(array $data): TicketType
{
return TicketType::create($data);
}
public function update(TicketType $type, array $data): TicketType
{
$type->update($data);
return $type->fresh();
}
public function delete(TicketType $type): bool
{
return $type->delete();
}
}
+73
View File
@@ -0,0 +1,73 @@
<?php
namespace App\Traits;
trait ApiResponse
{
protected function success($data = null, string $message = 'Success', int $code = 200)
{
return response()->json([
'success' => true,
'code' => $code,
'message' => $message,
'data' => $data
], $code);
}
protected function created($data = null, string $message = 'Data berhasil dibuat')
{
return response()->json([
'success' => true,
'code' => 201,
'message' => $message,
'data' => $data
], 201);
}
protected function updated($data = null, string $message = 'Data berhasil diperbarui')
{
return response()->json([
'success' => true,
'code' => 200,
'message' => $message,
'data' => $data
]);
}
protected function deleted(string $message = 'Data berhasil dihapus')
{
return response()->json([
'success' => true,
'code' => 200,
'message' => $message
]);
}
protected function error(string $message = 'Internal Server Error', int $code = 500)
{
return response()->json([
'success' => false,
'code' => $code,
'message' => $message
], $code);
}
protected function validationError($errors)
{
return response()->json([
'success' => false,
'code' => 422,
'message' => 'Validation Error',
'errors' => $errors
], 422);
}
protected function notFound(string $message = 'Data tidak ditemukan')
{
return response()->json([
'success' => false,
'code' => 404,
'message' => $message
], 404);
}
}
+1
View File
@@ -11,6 +11,7 @@ return Application::configure(basePath: dirname(__DIR__))
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
//
})
@@ -0,0 +1,28 @@
info:
name: Add Tickets
type: http
seq: 2
http:
method: POST
url: http://127.0.0.1:8000/api/tickets
body:
type: json
data: |-
{
"user_id": 1,
"ticket_type_id": 1,
"customer_id": 133,
"title": "Lampu PON modem merah",
"description": "Pelanggan mengeluhkan internet lambat",
"priority": "high"
}
auth:
type: bearer
token: ll4X9vVjWRRDGbGQyrzcAhWVHmlEbpmQ7odklBCh7423957d
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
@@ -0,0 +1,17 @@
info:
name: Get List Tickets
type: http
seq: 2
http:
method: GET
url: http://127.0.0.1:8000/api/tickets
auth:
type: bearer
token: ll4X9vVjWRRDGbGQyrzcAhWVHmlEbpmQ7odklBCh7423957d
settings:
encodeUrl: true
timeout: 0
followRedirects: true
maxRedirects: 5
@@ -0,0 +1,7 @@
info:
name: Ticketing
type: folder
seq: 2
request:
auth: inherit
+1 -1
View File
@@ -7,12 +7,12 @@
"license": "MIT",
"require": {
"php": "^8.2",
"darkaonline/l5-swagger": "^11.1",
"laravel/framework": "^12.0",
"laravel/sanctum": "^4.3",
"laravel/tinker": "^2.10.1"
},
"require-dev": {
"dedoc/scramble": "^0.13.28",
"fakerphp/faker": "^1.23",
"laravel/pail": "^1.2.2",
"laravel/pint": "^1.13",
Generated
+232 -467
View File
@@ -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": "13ca615bebb1db69527a7039d10b8684",
"content-hash": "dc5dc467fbab2c5682c8e676f4c2ffb4",
"packages": [
{
"name": "brick/math",
@@ -135,86 +135,6 @@
],
"time": "2024-02-09T16:56:22+00:00"
},
{
"name": "darkaonline/l5-swagger",
"version": "11.1.0",
"source": {
"type": "git",
"url": "https://github.com/DarkaOnLine/L5-Swagger.git",
"reference": "110b59478c9417c13794cef62a82b019433d642a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DarkaOnLine/L5-Swagger/zipball/110b59478c9417c13794cef62a82b019433d642a",
"reference": "110b59478c9417c13794cef62a82b019433d642a",
"shasum": ""
},
"require": {
"ext-json": "*",
"laravel/framework": "^13.0 || ^12.1 || ^11.44",
"php": "^8.2",
"swagger-api/swagger-ui": ">=5.18.3",
"symfony/yaml": "^5.0 || ^6.0 || ^7.0 || ^8.0",
"zircote/swagger-php": "^6.0"
},
"require-dev": {
"mockery/mockery": "1.*",
"orchestra/testbench": "^11.0 || ^10.0 || ^9.0 || ^8.0 || 7.* || ^6.15 || 5.*",
"php-coveralls/php-coveralls": "^2.0",
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"laravel": {
"aliases": {
"L5Swagger": "L5Swagger\\L5SwaggerFacade"
},
"providers": [
"L5Swagger\\L5SwaggerServiceProvider"
]
}
},
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"L5Swagger\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Darius Matulionis",
"email": "darius@matulionis.lt"
}
],
"description": "OpenApi or Swagger integration to Laravel",
"keywords": [
"api",
"documentation",
"laravel",
"openapi",
"specification",
"swagger",
"ui"
],
"support": {
"issues": "https://github.com/DarkaOnLine/L5-Swagger/issues",
"source": "https://github.com/DarkaOnLine/L5-Swagger/tree/11.1.0"
},
"funding": [
{
"url": "https://github.com/DarkaOnLine",
"type": "github"
}
],
"time": "2026-06-12T10:04:41+00:00"
},
{
"name": "dflydev/dot-access-data",
"version": "v3.0.3",
@@ -2754,53 +2674,6 @@
],
"time": "2025-12-27T19:41:33+00:00"
},
{
"name": "phpstan/phpdoc-parser",
"version": "2.3.2",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "a004701b11273a26cd7955a61d67a7f1e525a45a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a004701b11273a26cd7955a61d67a7f1e525a45a",
"reference": "a004701b11273a26cd7955a61d67a7f1e525a45a",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0"
},
"require-dev": {
"doctrine/annotations": "^2.0",
"nikic/php-parser": "^5.3.0",
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpstan/extension-installer": "^1.0",
"phpstan/phpstan": "^2.0",
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^9.6",
"symfony/process": "^5.2"
},
"type": "library",
"autoload": {
"psr-4": {
"PHPStan\\PhpDocParser\\": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.2"
},
"time": "2026-01-25T14:56:51+00:00"
},
{
"name": "psr/clock",
"version": "1.0.0",
@@ -3292,68 +3165,6 @@
},
"time": "2026-05-23T13:41:31+00:00"
},
{
"name": "radebatz/type-info-extras",
"version": "1.0.7",
"source": {
"type": "git",
"url": "https://github.com/DerManoMann/type-info-extras.git",
"reference": "95a524a74a61648b44e355cb33d38db4b17ef5ce"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DerManoMann/type-info-extras/zipball/95a524a74a61648b44e355cb33d38db4b17ef5ce",
"reference": "95a524a74a61648b44e355cb33d38db4b17ef5ce",
"shasum": ""
},
"require": {
"php": ">=8.2",
"phpstan/phpdoc-parser": "^2.0",
"symfony/type-info": "^7.3.8 || ^7.4.1 || ^8.0 || ^8.1-@dev"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.70",
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^11.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Radebatz\\TypeInfoExtras\\": "src"
},
"exclude-from-classmap": [
"/tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Martin Rademacher",
"email": "mano@radebatz.org"
}
],
"description": "Extras for symfony/type-info",
"homepage": "http://radebatz.net/mano/",
"keywords": [
"component",
"symfony",
"type-info",
"types"
],
"support": {
"issues": "https://github.com/DerManoMann/type-info-extras/issues",
"source": "https://github.com/DerManoMann/type-info-extras/tree/1.0.7"
},
"time": "2026-03-06T22:40:29+00:00"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
@@ -3552,67 +3363,6 @@
},
"time": "2025-12-14T04:43:48+00:00"
},
{
"name": "swagger-api/swagger-ui",
"version": "v5.32.6",
"source": {
"type": "git",
"url": "https://github.com/swagger-api/swagger-ui.git",
"reference": "dcdca62c8b64a0a54e4decd4e1a6c3c712fdcc60"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/dcdca62c8b64a0a54e4decd4e1a6c3c712fdcc60",
"reference": "dcdca62c8b64a0a54e4decd4e1a6c3c712fdcc60",
"shasum": ""
},
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Anna Bodnia",
"email": "anna.bodnia@gmail.com"
},
{
"name": "Buu Nguyen",
"email": "buunguyen@gmail.com"
},
{
"name": "Josh Ponelat",
"email": "jponelat@gmail.com"
},
{
"name": "Kyle Shockey",
"email": "kyleshockey1@gmail.com"
},
{
"name": "Robert Barnwell",
"email": "robert@robertismy.name"
},
{
"name": "Sahar Jafari",
"email": "shr.jafari@gmail.com"
}
],
"description": " Swagger UI is a collection of HTML, Javascript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.",
"homepage": "http://swagger.io",
"keywords": [
"api",
"documentation",
"openapi",
"specification",
"swagger",
"ui"
],
"support": {
"issues": "https://github.com/swagger-api/swagger-ui/issues",
"source": "https://github.com/swagger-api/swagger-ui/tree/v5.32.6"
},
"time": "2026-05-12T09:35:37+00:00"
},
{
"name": "symfony/clock",
"version": "v7.4.8",
@@ -5957,89 +5707,6 @@
],
"time": "2026-01-05T13:30:16+00:00"
},
{
"name": "symfony/type-info",
"version": "v7.4.9",
"source": {
"type": "git",
"url": "https://github.com/symfony/type-info.git",
"reference": "cafeedbf157b890e94ac5b83eaed85595106d5d6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/type-info/zipball/cafeedbf157b890e94ac5b83eaed85595106d5d6",
"reference": "cafeedbf157b890e94ac5b83eaed85595106d5d6",
"shasum": ""
},
"require": {
"php": ">=8.2",
"psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3"
},
"conflict": {
"phpstan/phpdoc-parser": "<1.30"
},
"require-dev": {
"phpstan/phpdoc-parser": "^1.30|^2.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\TypeInfo\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mathias Arlaud",
"email": "mathias.arlaud@gmail.com"
},
{
"name": "Baptiste LEDUC",
"email": "baptiste.leduc@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Extracts PHP types information.",
"homepage": "https://symfony.com",
"keywords": [
"PHPStan",
"phpdoc",
"symfony",
"type"
],
"support": {
"source": "https://github.com/symfony/type-info/tree/v7.4.9"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-04-22T15:21:55+00:00"
},
{
"name": "symfony/uid",
"version": "v7.4.9",
@@ -6205,82 +5872,6 @@
],
"time": "2026-03-30T13:44:50+00:00"
},
{
"name": "symfony/yaml",
"version": "v7.4.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "a7ec3b1156faf8815db7683ec7c1e7338e6f977c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/a7ec3b1156faf8815db7683ec7c1e7338e6f977c",
"reference": "a7ec3b1156faf8815db7683ec7c1e7338e6f977c",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"symfony/console": "<6.4"
},
"require-dev": {
"symfony/console": "^6.4|^7.0|^8.0"
},
"bin": [
"Resources/bin/yaml-lint"
],
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Yaml\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/yaml/tree/v7.4.13"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-05-25T06:06:12+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
"version": "v2.4.0",
@@ -6493,99 +6084,89 @@
}
],
"time": "2026-04-26T05:33:54+00:00"
},
}
],
"packages-dev": [
{
"name": "zircote/swagger-php",
"version": "6.2.0",
"name": "dedoc/scramble",
"version": "v0.13.28",
"source": {
"type": "git",
"url": "https://github.com/zircote/swagger-php.git",
"reference": "060af3bb9c4cba6a5859aba2c51cd1c129479410"
"url": "https://github.com/dedoc/scramble.git",
"reference": "e50927c732a341bb743671066892eec6bd2e958b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zircote/swagger-php/zipball/060af3bb9c4cba6a5859aba2c51cd1c129479410",
"reference": "060af3bb9c4cba6a5859aba2c51cd1c129479410",
"url": "https://api.github.com/repos/dedoc/scramble/zipball/e50927c732a341bb743671066892eec6bd2e958b",
"reference": "e50927c732a341bb743671066892eec6bd2e958b",
"shasum": ""
},
"require": {
"nikic/php-parser": "^4.19 || ^5.0",
"php": ">=8.2",
"phpstan/phpdoc-parser": "^2.0",
"psr/log": "^1.1 || ^2.0 || ^3.0",
"radebatz/type-info-extras": "^1.0.2",
"symfony/console": "^7.4 || ^8.0",
"symfony/deprecation-contracts": "^2 || ^3",
"symfony/finder": "^5.0 || ^6.0 || ^7.0 || ^8.0",
"symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0"
},
"conflict": {
"symfony/process": ">=6, <6.4.14"
"illuminate/contracts": "^10.0|^11.0|^12.0|^13.0",
"myclabs/deep-copy": "^1.12",
"nikic/php-parser": "^5.0",
"php": "^8.1",
"phpstan/phpdoc-parser": "^1.0|^2.0",
"spatie/laravel-package-tools": "^1.9.2"
},
"require-dev": {
"composer/package-versions-deprecated": "^1.11",
"doctrine/annotations": "^2.0",
"friendsofphp/php-cs-fixer": "^3.62.0",
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^11.5 || >=12.5.22",
"rector/rector": "^2.3.1"
"larastan/larastan": "^3.3",
"laravel/pint": "^v1.1.0",
"nunomaduro/collision": "^7.0|^8.0",
"orchestra/testbench": "^8.0|^9.0|^10.0|^11.0",
"pestphp/pest": "^2.34|^3.7|^4.4",
"pestphp/pest-plugin-laravel": "^2.3|^3.1|^4.1",
"phpstan/extension-installer": "^1.4",
"phpstan/phpstan-deprecation-rules": "^2.0",
"phpstan/phpstan-phpunit": "^2.0",
"phpunit/phpunit": "^10.5|^11.5.3|^12.5.12",
"spatie/laravel-permission": "^6.10|^7.2",
"spatie/pest-plugin-snapshots": "^2.1"
},
"bin": [
"bin/openapi"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.x-dev"
"laravel": {
"providers": [
"Dedoc\\Scramble\\ScrambleServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"OpenApi\\": "src"
"Dedoc\\Scramble\\": "src",
"Dedoc\\Scramble\\Database\\Factories\\": "database/factories"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
"MIT"
],
"authors": [
{
"name": "Robert Allen",
"email": "zircote@gmail.com"
},
{
"name": "Bob Fanger",
"email": "bfanger@gmail.com",
"homepage": "https://bfanger.nl"
},
{
"name": "Martin Rademacher",
"email": "mano@radebatz.net",
"homepage": "https://radebatz.net"
"name": "Roman Lytvynenko",
"email": "litvinenko95@gmail.com",
"role": "Developer"
}
],
"description": "Generate interactive documentation for your RESTful API using PHP attributes (preferred) or PHPDoc annotations",
"homepage": "https://github.com/zircote/swagger-php",
"description": "Automatic generation of API documentation for Laravel applications.",
"homepage": "https://github.com/dedoc/scramble",
"keywords": [
"api",
"json",
"rest",
"service discovery"
"documentation",
"laravel",
"openapi"
],
"support": {
"issues": "https://github.com/zircote/swagger-php/issues",
"source": "https://github.com/zircote/swagger-php/tree/6.2.0"
"issues": "https://github.com/dedoc/scramble/issues",
"source": "https://github.com/dedoc/scramble/tree/v0.13.28"
},
"funding": [
{
"url": "https://github.com/zircote",
"url": "https://github.com/romalytvynenko",
"type": "github"
}
],
"time": "2026-06-14T06:51:56+00:00"
}
],
"packages-dev": [
"time": "2026-06-14T18:21:12+00:00"
},
{
"name": "fakerphp/faker",
"version": "v1.24.1",
@@ -7339,6 +6920,53 @@
},
"time": "2022-02-21T01:04:05+00:00"
},
{
"name": "phpstan/phpdoc-parser",
"version": "2.3.2",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
"reference": "a004701b11273a26cd7955a61d67a7f1e525a45a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a004701b11273a26cd7955a61d67a7f1e525a45a",
"reference": "a004701b11273a26cd7955a61d67a7f1e525a45a",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0"
},
"require-dev": {
"doctrine/annotations": "^2.0",
"nikic/php-parser": "^5.3.0",
"php-parallel-lint/php-parallel-lint": "^1.2",
"phpstan/extension-installer": "^1.0",
"phpstan/phpstan": "^2.0",
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^9.6",
"symfony/process": "^5.2"
},
"type": "library",
"autoload": {
"psr-4": {
"PHPStan\\PhpDocParser\\": [
"src/"
]
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
"source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.2"
},
"time": "2026-01-25T14:56:51+00:00"
},
{
"name": "phpunit/php-code-coverage",
"version": "11.0.12",
@@ -8782,6 +8410,67 @@
],
"time": "2024-10-09T05:16:32+00:00"
},
{
"name": "spatie/laravel-package-tools",
"version": "1.93.1",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-package-tools.git",
"reference": "d5552849801f2642aea710557463234b59ef65eb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/d5552849801f2642aea710557463234b59ef65eb",
"reference": "d5552849801f2642aea710557463234b59ef65eb",
"shasum": ""
},
"require": {
"illuminate/contracts": "^10.0|^11.0|^12.0|^13.0",
"php": "^8.1"
},
"require-dev": {
"mockery/mockery": "^1.5",
"orchestra/testbench": "^8.0|^9.2|^10.0|^11.0",
"pestphp/pest": "^2.1|^3.1|^4.0",
"phpunit/php-code-coverage": "^10.0|^11.0|^12.0",
"phpunit/phpunit": "^10.5|^11.5|^12.5",
"spatie/pest-plugin-test-time": "^2.2|^3.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Spatie\\LaravelPackageTools\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Freek Van der Herten",
"email": "freek@spatie.be",
"role": "Developer"
}
],
"description": "Tools for creating Laravel packages",
"homepage": "https://github.com/spatie/laravel-package-tools",
"keywords": [
"laravel-package-tools",
"spatie"
],
"support": {
"issues": "https://github.com/spatie/laravel-package-tools/issues",
"source": "https://github.com/spatie/laravel-package-tools/tree/1.93.1"
},
"funding": [
{
"url": "https://github.com/spatie",
"type": "github"
}
],
"time": "2026-05-19T14:06:37+00:00"
},
{
"name": "staabm/side-effects-detector",
"version": "1.0.5",
@@ -8834,6 +8523,82 @@
],
"time": "2024-10-20T05:08:20+00:00"
},
{
"name": "symfony/yaml",
"version": "v7.4.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "a7ec3b1156faf8815db7683ec7c1e7338e6f977c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/a7ec3b1156faf8815db7683ec7c1e7338e6f977c",
"reference": "a7ec3b1156faf8815db7683ec7c1e7338e6f977c",
"shasum": ""
},
"require": {
"php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"symfony/console": "<6.4"
},
"require-dev": {
"symfony/console": "^6.4|^7.0|^8.0"
},
"bin": [
"Resources/bin/yaml-lint"
],
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Yaml\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/yaml/tree/v7.4.13"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2026-05-25T06:06:12+00:00"
},
{
"name": "theseer/tokenizer",
"version": "1.3.1",
-333
View File
@@ -1,333 +0,0 @@
<?php
return [
'default' => 'default',
'documentations' => [
'default' => [
'api' => [
'title' => 'L5 Swagger UI',
],
'routes' => [
/*
* Route for accessing api documentation interface
*/
'api' => 'api/documentation',
],
'paths' => [
/*
* Edit to include full URL in ui for assets
*/
'use_absolute_path' => env('L5_SWAGGER_USE_ABSOLUTE_PATH', true),
/*
* Edit to set path where swagger ui assets should be stored
*/
'swagger_ui_assets_path' => env('L5_SWAGGER_UI_ASSETS_PATH', 'vendor/swagger-api/swagger-ui/dist/'),
/*
* File name of the generated json documentation file
*/
'docs_json' => 'api-docs.json',
/*
* File name of the generated YAML documentation file
*/
'docs_yaml' => 'api-docs.yaml',
/*
* Set this to `json` or `yaml` to determine which documentation file to use in UI
*/
'format_to_use_for_docs' => env('L5_FORMAT_TO_USE_FOR_DOCS', 'json'),
/*
* Absolute paths to directory containing the swagger annotations are stored.
*/
'annotations' => [
base_path('app'),
],
],
],
],
'defaults' => [
'routes' => [
/*
* Route for accessing parsed swagger annotations.
*/
'docs' => 'docs',
/*
* Route for Oauth2 authentication callback.
*/
'oauth2_callback' => 'api/oauth2-callback',
/*
* Middleware allows to prevent unexpected access to API documentation
*/
'middleware' => [
'api' => [],
'asset' => [],
'docs' => [],
'oauth2_callback' => [],
],
/*
* Route Group options
*/
'group_options' => [],
],
'paths' => [
/*
* Absolute path to location where parsed annotations will be stored
*/
'docs' => storage_path('api-docs'),
/*
* Absolute path to directory where to export views
*/
'views' => base_path('resources/views/vendor/l5-swagger'),
/*
* Edit to set the api's base path
*/
'base' => env('L5_SWAGGER_BASE_PATH', null),
/*
* Absolute path to directories that should be excluded from scanning
* @deprecated Please use `scanOptions.exclude`
* `scanOptions.exclude` overwrites this
*/
'excludes' => [],
],
'scanOptions' => [
/**
* Optional CustomGeneratorInterface implementation that creates an OpenApi\Generator instance.
* Use this to provide a custom pre-configured generator.
* Accepts an instance or a class name (FQCN) implementing the interface.
*
* @see \L5Swagger\CustomGeneratorInterface
*/
'generator_factory' => null,
/**
* Configuration for default processors. Allows to pass processors configuration to swagger-php.
*
* @link https://zircote.github.io/swagger-php/reference/processors.html
*/
'default_processors_configuration' => [
/** Example */
/**
* 'operationId.hash' => true,
* 'pathFilter' => [
* 'tags' => [
* '/pets/',
* '/store/',
* ],
* ],.
*/
],
/**
* analyser: defaults to \OpenApi\StaticAnalyser .
*
* @see \OpenApi\scan
*/
'analyser' => null,
/**
* analysis: defaults to a new \OpenApi\Analysis .
*
* @see \OpenApi\scan
*/
'analysis' => null,
/**
* Custom processors.
*
* Each entry can be:
* - A class name or instance (inserted after BuildPaths by default)
* - An array with 'class' and 'after' keys for precise positioning:
* ['class' => MyProcessor::class, 'after' => SomeProcessor::class]
*
* @link https://github.com/zircote/swagger-php/tree/master/Examples/processors/schema-query-parameter
* @see \OpenApi\scan
*/
'processors' => [
// \App\SwaggerProcessors\SchemaQueryParameter::class,
// ['class' => \App\SwaggerProcessors\Custom::class, 'after' => \OpenApi\Processors\AugmentSchemas::class],
],
/**
* pattern: string $pattern File pattern(s) to scan (default: *.php) .
*
* @see \OpenApi\scan
*/
'pattern' => null,
/*
* Absolute path to directories that should be excluded from scanning
* @note This option overwrites `paths.excludes`
* @see \OpenApi\scan
*/
'exclude' => [],
/*
* Allows to generate specs either for OpenAPI 3.0.0 or OpenAPI 3.1.0.
* By default the spec will be in version 3.0.0
*/
'open_api_spec_version' => env('L5_SWAGGER_OPEN_API_SPEC_VERSION', \L5Swagger\Generator::OPEN_API_DEFAULT_SPEC_VERSION),
],
/*
* API security definitions. Will be generated into documentation file.
*/
'securityDefinitions' => [
'securitySchemes' => [
/*
* Examples of Security schemes
*/
/*
'api_key_security_example' => [ // Unique name of security
'type' => 'apiKey', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
'description' => 'A short description for security scheme',
'name' => 'api_key', // The name of the header or query parameter to be used.
'in' => 'header', // The location of the API key. Valid values are "query" or "header".
],
'oauth2_security_example' => [ // Unique name of security
'type' => 'oauth2', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
'description' => 'A short description for oauth2 security scheme.',
'flow' => 'implicit', // The flow used by the OAuth2 security scheme. Valid values are "implicit", "password", "application" or "accessCode".
'authorizationUrl' => 'http://example.com/auth', // The authorization URL to be used for (implicit/accessCode)
//'tokenUrl' => 'http://example.com/auth' // The authorization URL to be used for (password/application/accessCode)
'scopes' => [
'read:projects' => 'read your projects',
'write:projects' => 'modify projects in your account',
]
],
*/
/* Open API 3.0 support
'passport' => [ // Unique name of security
'type' => 'oauth2', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
'description' => 'Laravel passport oauth2 security.',
'in' => 'header',
'scheme' => 'https',
'flows' => [
"password" => [
"authorizationUrl" => config('app.url') . '/oauth/authorize',
"tokenUrl" => config('app.url') . '/oauth/token',
"refreshUrl" => config('app.url') . '/token/refresh',
"scopes" => []
],
],
],
'sanctum' => [ // Unique name of security
'type' => 'apiKey', // Valid values are "basic", "apiKey" or "oauth2".
'description' => 'Enter token in format (Bearer <token>)',
'name' => 'Authorization', // The name of the header or query parameter to be used.
'in' => 'header', // The location of the API key. Valid values are "query" or "header".
],
*/
],
'security' => [
/*
* Examples of Securities
*/
[
/*
'oauth2_security_example' => [
'read',
'write'
],
'passport' => []
*/
],
],
],
/*
* Set this to `true` in development mode so that docs would be regenerated on each request
* Set this to `false` to disable swagger generation on production
*/
'generate_always' => env('L5_SWAGGER_GENERATE_ALWAYS', false),
/*
* Set this to `true` to generate a copy of documentation in yaml format
*/
'generate_yaml_copy' => env('L5_SWAGGER_GENERATE_YAML_COPY', false),
/*
* Edit to trust the proxy's ip address - needed for AWS Load Balancer
* string[]
*/
'proxy' => false,
/*
* Configs plugin allows to fetch external configs instead of passing them to SwaggerUIBundle.
* See more at: https://github.com/swagger-api/swagger-ui#configs-plugin
*/
'additional_config_url' => null,
/*
* Apply a sort to the operation list of each API. It can be 'alpha' (sort by paths alphanumerically),
* 'method' (sort by HTTP method).
* Default is the order returned by the server unchanged.
*/
'operations_sort' => env('L5_SWAGGER_OPERATIONS_SORT', null),
/*
* Pass the validatorUrl parameter to SwaggerUi init on the JS side.
* A null value here disables validation.
*/
'validator_url' => null,
/*
* Swagger UI configuration parameters
*/
'ui' => [
'display' => [
'dark_mode' => env('L5_SWAGGER_UI_DARK_MODE', false),
/*
* Controls the default expansion setting for the operations and tags. It can be :
* 'list' (expands only the tags),
* 'full' (expands the tags and operations),
* 'none' (expands nothing).
*/
'doc_expansion' => env('L5_SWAGGER_UI_DOC_EXPANSION', 'none'),
/**
* If set, enables filtering. The top bar will show an edit box that
* you can use to filter the tagged operations that are shown. Can be
* Boolean to enable or disable, or a string, in which case filtering
* will be enabled using that string as the filter expression. Filtering
* is case-sensitive matching the filter expression anywhere inside
* the tag.
*/
'filter' => env('L5_SWAGGER_UI_FILTERS', true), // true | false
],
'authorization' => [
/*
* If set to true, it persists authorization data, and it would not be lost on browser close/refresh
*/
'persist_authorization' => env('L5_SWAGGER_UI_PERSIST_AUTHORIZATION', false),
'oauth2' => [
/*
* If set to true, adds PKCE to AuthorizationCodeGrant flow
*/
'use_pkce_with_authorization_code_grant' => false,
],
],
],
/*
* Constants which can be used in annotations
*/
'constants' => [
'L5_SWAGGER_CONST_HOST' => env('L5_SWAGGER_CONST_HOST', 'http://my-default-host.com'),
],
],
];
+180
View File
@@ -0,0 +1,180 @@
<?php
use Dedoc\Scramble\Http\Middleware\RestrictedDocsAccess;
return [
/*
* Which routes to document. String or array form; use Scramble::routes() for custom selection.
*
* 'api_path' => [
* 'include' => 'api',
* 'exclude' => ['api/internal'],
* ],
*
* Without *, patterns match path segments (api matches api and api/users, not apiary).
* With *, Str::is is used (e.g. api/v*).
*
* One static include default server is /{include} and paths are stripped (/users).
* Multiple includes or wildcards server defaults to / and paths stay full (/api/users).
* Override with `servers`, or use Scramble::registerApi() for separate bases.
*/
'api_path' => 'api',
/*
* Your API domain. By default, app domain is used. This is also a part of the default API routes
* matcher, so when implementing your own, make sure you use this config if needed.
*/
'api_domain' => null,
/*
* The path where your OpenAPI specification will be exported.
*/
'export_path' => 'api.json',
/*
* Cache configuration for the generated OpenAPI document.
*
* Use `scramble:cache` to warm the cache and `scramble:clear` to invalidate it.
*/
'cache' => [
'key' => 'scramble.openapi',
'store' => 'file',
],
'info' => [
/*
* API version.
*/
'version' => env('API_VERSION', '0.0.1'),
/*
* Description rendered on the home page of the API documentation (`/docs/api`).
*/
'description' => '',
],
'ui' => [
'title' => null,
],
'renderer' => 'elements',
'renderers' => [
/*
* Stoplight Elements config options: https://docs.stoplight.io/docs/elements/b074dc47b2826-elements-configuration-options
*/
'elements' => [
'view' => 'scramble::docs',
'theme' => 'light',
'hideTryIt' => false,
'hideSchemas' => false,
'logo' => '',
'tryItCredentialsPolicy' => 'include',
'layout' => 'responsive',
'router' => 'hash',
],
/*
* Scalar API reference config options: https://scalar.com/products/api-references/configuration
*/
'scalar' => [
'view' => 'scramble::scalar',
'cdn' => 'https://cdn.jsdelivr.net/npm/@scalar/api-reference',
'theme' => 'laravel',
'proxyUrl' => 'https://proxy.scalar.com',
'darkMode' => false,
'showDeveloperTools' => 'never',
'agent' => ['disabled' => true],
'credentials' => 'include',
],
],
/*
* The list of servers of the API. By default, when `null`, server URL will be created from
* `scramble.api_path` and `scramble.api_domain` config variables. When providing an array, you
* will need to specify the local server URL manually (if needed).
*
* Example of non-default config (final URLs are generated using Laravel `url` helper):
*
* ```php
* 'servers' => [
* 'Live' => 'api',
* 'Prod' => 'https://scramble.dedoc.co/api',
* ],
* ```
*/
'servers' => null,
/**
* Determines how Scramble stores the descriptions of enum cases.
* Available options:
* - 'description' Case descriptions are stored as the enum schema's description using table formatting.
* - 'extension' Case descriptions are stored in the `x-enumDescriptions` enum schema extension.
*
* @see https://redocly.com/docs-legacy/api-reference-docs/specification-extensions/x-enum-descriptions
* - false - Case descriptions are ignored.
*/
'enum_cases_description_strategy' => 'description',
/**
* Determines how Scramble stores the names of enum cases.
* Available options:
* - 'names' Case names are stored in the `x-enumNames` enum schema extension.
* - 'varnames' - Case names are stored in the `x-enum-varnames` enum schema extension.
* - false - Case names are not stored.
*/
'enum_cases_names_strategy' => false,
/**
* When Scramble encounters deep objects in query parameters, it flattens the parameters so the generated
* OpenAPI document correctly describes the API. Flattening deep query parameters is relevant until
* OpenAPI 3.2 is released and query string structure can be described properly.
*
* For example, this nested validation rule describes the object with `bar` property:
* `['foo.bar' => ['required', 'int']]`.
*
* When `flatten_deep_query_parameters` is `true`, Scramble will document the parameter like so:
* `{"name":"foo[bar]", "schema":{"type":"int"}, "required":true}`.
*
* When `flatten_deep_query_parameters` is `false`, Scramble will document the parameter like so:
* `{"name":"foo", "schema": {"type":"object", "properties":{"bar":{"type": "int"}}, "required": ["bar"]}, "required":true}`.
*/
'flatten_deep_query_parameters' => true,
'middleware' => [
'web',
RestrictedDocsAccess::class,
],
'extensions' => [],
/*
* Automatically document API security (OpenAPI `security` / `securitySchemes`) based on route
* middleware.
*
* Disabled by default. Uncomment the line below to enable `MiddlewareAuthSecurityStrategy`.
* When at least one documented route uses middleware matching the configured patterns (by default
* `auth` and `auth:*`), bearer auth is applied globally. Routes without matching middleware are
* marked as public (`security: []`).
*
* Set to `null` explicitly to disable. If you already configure security manually via
* `afterOpenApiGenerated` / `extendOpenApi`, keep this disabled to avoid duplicate schemes.
*
* Customize with a class-string or [class, options]:
*
* 'security_strategy' => [
* \Dedoc\Scramble\SecurityDocumentation\MiddlewareAuthSecurityStrategy::class,
* [
* 'middleware' => ['auth', 'auth:*'],
* 'scheme' => \Dedoc\Scramble\Support\Generator\SecurityScheme::http('bearer'),
* ],
* ],
*/
// 'security_strategy' => \Dedoc\Scramble\SecurityDocumentation\MiddlewareAuthSecurityStrategy::class,
'security_strategy' => [
\Dedoc\Scramble\SecurityDocumentation\MiddlewareAuthSecurityStrategy::class,
[
'middleware' => ['auth', 'auth:*'],
'scheme' => \Dedoc\Scramble\Support\Generator\SecurityScheme::http('bearer'),
],
],
];
+112
View File
@@ -0,0 +1,112 @@
<!doctype html>
<html lang="en" data-theme="{{ $config->renderer()->get('theme', 'light') }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="color-scheme" content="{{ $config->renderer()->get('theme', 'light') }}">
<title>{{ $config->get('ui.title') ?? config('app.name') . ' - API Docs' }}</title>
<script src="https://unpkg.com/@stoplight/elements@8.4.2/web-components.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/@stoplight/elements@8.4.2/styles.min.css">
<script>
const originalFetch = window.fetch;
// intercept TryIt requests and add the XSRF-TOKEN header,
// which is necessary for Sanctum cookie-based authentication to work correctly
window.fetch = (url, options) => {
const CSRF_TOKEN_COOKIE_KEY = "XSRF-TOKEN";
const CSRF_TOKEN_HEADER_KEY = "X-XSRF-TOKEN";
const getCookieValue = (key) => {
const cookie = document.cookie.split(';').find((cookie) => cookie.trim().startsWith(key));
return cookie?.split("=")[1];
};
const updateFetchHeaders = (
headers,
headerKey,
headerValue,
) => {
if (headers instanceof Headers) {
headers.set(headerKey, headerValue);
} else if (Array.isArray(headers)) {
headers.push([headerKey, headerValue]);
} else if (headers) {
headers[headerKey] = headerValue;
}
};
const csrfToken = getCookieValue(CSRF_TOKEN_COOKIE_KEY);
if (csrfToken) {
const { headers = new Headers() } = options || {};
updateFetchHeaders(headers, CSRF_TOKEN_HEADER_KEY, decodeURIComponent(csrfToken));
return originalFetch(url, {
...options,
headers,
});
}
return originalFetch(url, options);
};
</script>
<style>
html, body { margin:0; height:100%; }
body { background-color: var(--color-canvas); }
/* issues about the dark theme of stoplight/mosaic-code-viewer using web component:
* https://github.com/stoplightio/elements/issues/2188#issuecomment-1485461965
*/
[data-theme="dark"] .token.property {
color: rgb(128, 203, 196) !important;
}
[data-theme="dark"] .token.operator {
color: rgb(255, 123, 114) !important;
}
[data-theme="dark"] .token.number {
color: rgb(247, 140, 108) !important;
}
[data-theme="dark"] .token.string {
color: rgb(165, 214, 255) !important;
}
[data-theme="dark"] .token.boolean {
color: rgb(121, 192, 255) !important;
}
[data-theme="dark"] .token.punctuation {
color: #dbdbdb !important;
}
</style>
</head>
<body style="height: 100vh; overflow-y: hidden">
<elements-api
id="docs"
@foreach($config->renderer()->all(except: ['theme']) as $key => $value)
@continue(! $value)
{{ $key }}="{{ $value === true ? 'true' : ($value === false ? 'false' : $value) }}"
@endforeach
/>
<script>
(async () => {
const docs = document.getElementById('docs');
docs.apiDescriptionDocument = @json($spec);
})();
</script>
@if($config->renderer()->get('theme', 'light') === 'system')
<script>
var mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
function updateTheme(e) {
if (e.matches) {
window.document.documentElement.setAttribute('data-theme', 'dark');
window.document.getElementsByName('color-scheme')[0].setAttribute('content', 'dark');
} else {
window.document.documentElement.setAttribute('data-theme', 'light');
window.document.getElementsByName('color-scheme')[0].setAttribute('content', 'light');
}
}
mediaQuery.addEventListener('change', updateTheme);
updateTheme(mediaQuery);
</script>
@endif
</body>
</html>
+32
View File
@@ -0,0 +1,32 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>{{ $config->get('ui.title') ?? config('app.name') . ' - API Docs' }}</title>
</head>
<body>
<div id="app"></div>
<script src="{{ $config->renderer()->get('cdn', 'https://cdn.jsdelivr.net/npm/@scalar/api-reference') }}"></script>
<script>
const CSRF_TOKEN_COOKIE_KEY = "XSRF-TOKEN";
const CSRF_TOKEN_HEADER_KEY = "X-XSRF-TOKEN";
const getCookieValue = (key) => {
const cookie = document.cookie.split(';').find((cookie) => cookie.trim().startsWith(key));
return cookie?.split("=")[1];
};
Scalar.createApiReference('#app', {
content: @json($spec),
...@json($config->renderer()->all(except: ['cdn', 'credentials'])),
onBeforeRequest: ({ requestBuilder }) => {
requestBuilder.headers.set(CSRF_TOKEN_HEADER_KEY, decodeURIComponent(getCookieValue(CSRF_TOKEN_COOKIE_KEY)))
},
customFetch: (input, init) => {
return window.fetch(input, { ...init, credentials: @json($config->renderer()->get('credentials', 'include')) })
}
})
</script>
</body>
</html>
+22 -3
View File
@@ -3,13 +3,32 @@
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;
use App\Http\Controllers\Ticket\TicketController;
use App\Http\Controllers\Ticket\TicketTypeController;
Route::post('/login', [AuthController::class, 'login']);
// Route::prefix('tickets')->group(function () {
// Route::get('/', [TicketController::class, 'index']);
// Route::post('/', [TicketController::class, 'store']);
// });
Route::middleware('auth:sanctum')->group(function () {
Route::get('/profile', function (Request $request) {
return response()->json($request->user());
});
Route::apiResource('tickets', TicketController::class);
Route::apiResource('ticket-types', TicketTypeController::class);
});
// Route::get('/generate-token', function () {
// $user = \App\Models\User::find(1);
// return $user->createToken(
// 'master-token'
// )->plainTextToken;
// });
-119
View File
@@ -1,119 +0,0 @@
#!/usr/bin/env php
<?php
/**
* Proxy PHP file generated by Composer
*
* This file includes the referenced bin path (../zircote/swagger-php/bin/openapi)
* using a stream wrapper to prevent the shebang from being output on PHP<8
*
* @generated
*/
namespace Composer;
$GLOBALS['_composer_bin_dir'] = __DIR__;
$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..'.'/autoload.php';
if (PHP_VERSION_ID < 80000) {
if (!class_exists('Composer\BinProxyWrapper')) {
/**
* @internal
*/
final class BinProxyWrapper
{
private $handle;
private $position;
private $realpath;
public function stream_open($path, $mode, $options, &$opened_path)
{
// get rid of phpvfscomposer:// prefix for __FILE__ & __DIR__ resolution
$opened_path = substr($path, 17);
$this->realpath = realpath($opened_path) ?: $opened_path;
$opened_path = $this->realpath;
$this->handle = fopen($this->realpath, $mode);
$this->position = 0;
return (bool) $this->handle;
}
public function stream_read($count)
{
$data = fread($this->handle, $count);
if ($this->position === 0) {
$data = preg_replace('{^#!.*\r?\n}', '', $data);
}
$this->position += strlen($data);
return $data;
}
public function stream_cast($castAs)
{
return $this->handle;
}
public function stream_close()
{
fclose($this->handle);
}
public function stream_lock($operation)
{
return $operation ? flock($this->handle, $operation) : true;
}
public function stream_seek($offset, $whence)
{
if (0 === fseek($this->handle, $offset, $whence)) {
$this->position = ftell($this->handle);
return true;
}
return false;
}
public function stream_tell()
{
return $this->position;
}
public function stream_eof()
{
return feof($this->handle);
}
public function stream_stat()
{
return array();
}
public function stream_set_option($option, $arg1, $arg2)
{
return true;
}
public function url_stat($path, $flags)
{
$path = substr($path, 17);
if (file_exists($path)) {
return stat($path);
}
return false;
}
}
}
if (
(function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
|| (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
) {
return include("phpvfscomposer://" . __DIR__ . '/..'.'/zircote/swagger-php/bin/openapi');
}
}
return include __DIR__ . '/..'.'/zircote/swagger-php/bin/openapi';
-5
View File
@@ -1,5 +0,0 @@
@ECHO OFF
setlocal DISABLEDELAYEDEXPANSION
SET BIN_TARGET=%~dp0/openapi
SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
php "%BIN_TARGET%" %*
+468 -193
View File
@@ -7,10 +7,25 @@ $baseDir = dirname($vendorDir);
return array(
'App\\Docs\\OpenApiSpec' => $baseDir . '/app/Docs/OpenApiSpec.php',
'App\\Http\\Controllers\\ApiController' => $baseDir . '/app/Http/Controllers/ApiController.php',
'App\\Http\\Controllers\\AuthController' => $baseDir . '/app/Http/Controllers/AuthController.php',
'App\\Http\\Controllers\\Controller' => $baseDir . '/app/Http/Controllers/Controller.php',
'App\\Http\\Controllers\\TicketController' => $baseDir . '/app/Http/Controllers/TicketController.php',
'App\\Http\\Controllers\\Ticket\\TicketController' => $baseDir . '/app/Http/Controllers/Ticket/TicketController.php',
'App\\Http\\Requests\\Ticket\\StoreTicketRequest' => $baseDir . '/app/Http/Requests/Ticket/StoreTicketRequest.php',
'App\\Http\\Requests\\Ticket\\UpdateTicketRequest' => $baseDir . '/app/Http/Requests/Ticket/UpdateTicketRequest.php',
'App\\Http\\Resources\\TicketResource' => $baseDir . '/app/Http/Resources/TicketResource.php',
'App\\Models\\Ticket' => $baseDir . '/app/Models/Ticket.php',
'App\\Models\\TicketApproval' => $baseDir . '/app/Models/TicketApproval.php',
'App\\Models\\TicketAssignment' => $baseDir . '/app/Models/TicketAssignment.php',
'App\\Models\\TicketFile' => $baseDir . '/app/Models/TicketFile.php',
'App\\Models\\TicketLog' => $baseDir . '/app/Models/TicketLog.php',
'App\\Models\\TicketMaterial' => $baseDir . '/app/Models/TicketMaterial.php',
'App\\Models\\TicketType' => $baseDir . '/app/Models/TicketType.php',
'App\\Models\\User' => $baseDir . '/app/Models/User.php',
'App\\Providers\\AppServiceProvider' => $baseDir . '/app/Providers/AppServiceProvider.php',
'App\\Services\\Ticket\\TicketService' => $baseDir . '/app/Services/Ticket/TicketService.php',
'App\\Traits\\ApiResponse' => $baseDir . '/app/Traits/ApiResponse.php',
'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
'Brick\\Math\\BigDecimal' => $vendorDir . '/brick/math/src/BigDecimal.php',
'Brick\\Math\\BigInteger' => $vendorDir . '/brick/math/src/BigInteger.php',
@@ -145,6 +160,425 @@ return array(
'DateMalformedStringException' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php',
'DateObjectError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateObjectError.php',
'DateRangeError' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/DateRangeError.php',
'Dedoc\\Scramble\\AbstractOpenApiVisitor' => $vendorDir . '/dedoc/scramble/src/AbstractOpenApiVisitor.php',
'Dedoc\\Scramble\\Attributes\\BodyParameter' => $vendorDir . '/dedoc/scramble/src/Attributes/BodyParameter.php',
'Dedoc\\Scramble\\Attributes\\CookieParameter' => $vendorDir . '/dedoc/scramble/src/Attributes/CookieParameter.php',
'Dedoc\\Scramble\\Attributes\\Endpoint' => $vendorDir . '/dedoc/scramble/src/Attributes/Endpoint.php',
'Dedoc\\Scramble\\Attributes\\Example' => $vendorDir . '/dedoc/scramble/src/Attributes/Example.php',
'Dedoc\\Scramble\\Attributes\\ExcludeAllRoutesFromDocs' => $vendorDir . '/dedoc/scramble/src/Attributes/ExcludeAllRoutesFromDocs.php',
'Dedoc\\Scramble\\Attributes\\ExcludeRouteFromDocs' => $vendorDir . '/dedoc/scramble/src/Attributes/ExcludeRouteFromDocs.php',
'Dedoc\\Scramble\\Attributes\\Group' => $vendorDir . '/dedoc/scramble/src/Attributes/Group.php',
'Dedoc\\Scramble\\Attributes\\Header' => $vendorDir . '/dedoc/scramble/src/Attributes/Header.php',
'Dedoc\\Scramble\\Attributes\\HeaderParameter' => $vendorDir . '/dedoc/scramble/src/Attributes/HeaderParameter.php',
'Dedoc\\Scramble\\Attributes\\Hidden' => $vendorDir . '/dedoc/scramble/src/Attributes/Hidden.php',
'Dedoc\\Scramble\\Attributes\\IgnoreParam' => $vendorDir . '/dedoc/scramble/src/Attributes/IgnoreParam.php',
'Dedoc\\Scramble\\Attributes\\MissingValue' => $vendorDir . '/dedoc/scramble/src/Attributes/MissingValue.php',
'Dedoc\\Scramble\\Attributes\\Parameter' => $vendorDir . '/dedoc/scramble/src/Attributes/Parameter.php',
'Dedoc\\Scramble\\Attributes\\PathParameter' => $vendorDir . '/dedoc/scramble/src/Attributes/PathParameter.php',
'Dedoc\\Scramble\\Attributes\\QueryParameter' => $vendorDir . '/dedoc/scramble/src/Attributes/QueryParameter.php',
'Dedoc\\Scramble\\Attributes\\Response' => $vendorDir . '/dedoc/scramble/src/Attributes/Response.php',
'Dedoc\\Scramble\\Attributes\\SchemaName' => $vendorDir . '/dedoc/scramble/src/Attributes/SchemaName.php',
'Dedoc\\Scramble\\CacheableGenerator' => $vendorDir . '/dedoc/scramble/src/CacheableGenerator.php',
'Dedoc\\Scramble\\Configuration\\ApiPath' => $vendorDir . '/dedoc/scramble/src/Configuration/ApiPath.php',
'Dedoc\\Scramble\\Configuration\\DocumentTransformers' => $vendorDir . '/dedoc/scramble/src/Configuration/DocumentTransformers.php',
'Dedoc\\Scramble\\Configuration\\GeneratorConfigCollection' => $vendorDir . '/dedoc/scramble/src/Configuration/GeneratorConfigCollection.php',
'Dedoc\\Scramble\\Configuration\\InferConfig' => $vendorDir . '/dedoc/scramble/src/Configuration/InferConfig.php',
'Dedoc\\Scramble\\Configuration\\JsonApiConfig' => $vendorDir . '/dedoc/scramble/src/Configuration/JsonApiConfig.php',
'Dedoc\\Scramble\\Configuration\\OperationTransformers' => $vendorDir . '/dedoc/scramble/src/Configuration/OperationTransformers.php',
'Dedoc\\Scramble\\Configuration\\ParametersExtractors' => $vendorDir . '/dedoc/scramble/src/Configuration/ParametersExtractors.php',
'Dedoc\\Scramble\\Configuration\\RendererConfig' => $vendorDir . '/dedoc/scramble/src/Configuration/RendererConfig.php',
'Dedoc\\Scramble\\Configuration\\RuleTransformers' => $vendorDir . '/dedoc/scramble/src/Configuration/RuleTransformers.php',
'Dedoc\\Scramble\\Configuration\\SecurityDocumentationContext' => $vendorDir . '/dedoc/scramble/src/Configuration/SecurityDocumentationContext.php',
'Dedoc\\Scramble\\Configuration\\ServerVariables' => $vendorDir . '/dedoc/scramble/src/Configuration/ServerVariables.php',
'Dedoc\\Scramble\\Console\\Commands\\AnalyzeDocumentation' => $vendorDir . '/dedoc/scramble/src/Console/Commands/AnalyzeDocumentation.php',
'Dedoc\\Scramble\\Console\\Commands\\CacheDocumentation' => $vendorDir . '/dedoc/scramble/src/Console/Commands/CacheDocumentation.php',
'Dedoc\\Scramble\\Console\\Commands\\ClearDocumentationCache' => $vendorDir . '/dedoc/scramble/src/Console/Commands/ClearDocumentationCache.php',
'Dedoc\\Scramble\\Console\\Commands\\Components\\Code' => $vendorDir . '/dedoc/scramble/src/Console/Commands/Components/Code.php',
'Dedoc\\Scramble\\Console\\Commands\\Components\\Component' => $vendorDir . '/dedoc/scramble/src/Console/Commands/Components/Component.php',
'Dedoc\\Scramble\\Console\\Commands\\Components\\TermsOfContentItem' => $vendorDir . '/dedoc/scramble/src/Console/Commands/Components/TermsOfContentItem.php',
'Dedoc\\Scramble\\Console\\Commands\\Concerns\\ManagesDocumentationCache' => $vendorDir . '/dedoc/scramble/src/Console/Commands/Concerns/ManagesDocumentationCache.php',
'Dedoc\\Scramble\\Console\\Commands\\ExportDocumentation' => $vendorDir . '/dedoc/scramble/src/Console/Commands/ExportDocumentation.php',
'Dedoc\\Scramble\\ContextReferences' => $vendorDir . '/dedoc/scramble/src/ContextReferences.php',
'Dedoc\\Scramble\\ContextReferencesCollection' => $vendorDir . '/dedoc/scramble/src/ContextReferencesCollection.php',
'Dedoc\\Scramble\\Contracts\\AllRulesSchemasTransformer' => $vendorDir . '/dedoc/scramble/src/Contracts/AllRulesSchemasTransformer.php',
'Dedoc\\Scramble\\Contracts\\DocumentTransformer' => $vendorDir . '/dedoc/scramble/src/Contracts/DocumentTransformer.php',
'Dedoc\\Scramble\\Contracts\\OperationTransformer' => $vendorDir . '/dedoc/scramble/src/Contracts/OperationTransformer.php',
'Dedoc\\Scramble\\Contracts\\RuleTransformer' => $vendorDir . '/dedoc/scramble/src/Contracts/RuleTransformer.php',
'Dedoc\\Scramble\\Contracts\\SecurityDocumentationStrategy' => $vendorDir . '/dedoc/scramble/src/Contracts/SecurityDocumentationStrategy.php',
'Dedoc\\Scramble\\DocumentTransformers\\AddDocumentTags' => $vendorDir . '/dedoc/scramble/src/DocumentTransformers/AddDocumentTags.php',
'Dedoc\\Scramble\\DocumentTransformers\\CleanupUnusedResponseReferencesTransformer' => $vendorDir . '/dedoc/scramble/src/DocumentTransformers/CleanupUnusedResponseReferencesTransformer.php',
'Dedoc\\Scramble\\Enums\\JsonApiArraySerialization' => $vendorDir . '/dedoc/scramble/src/Enums/JsonApiArraySerialization.php',
'Dedoc\\Scramble\\Exceptions\\ConsoleRenderable' => $vendorDir . '/dedoc/scramble/src/Exceptions/ConsoleRenderable.php',
'Dedoc\\Scramble\\Exceptions\\InvalidSchema' => $vendorDir . '/dedoc/scramble/src/Exceptions/InvalidSchema.php',
'Dedoc\\Scramble\\Exceptions\\OpenApiReferenceTargetNotFoundException' => $vendorDir . '/dedoc/scramble/src/Exceptions/OpenApiReferenceTargetNotFoundException.php',
'Dedoc\\Scramble\\Exceptions\\RouteAware' => $vendorDir . '/dedoc/scramble/src/Exceptions/RouteAware.php',
'Dedoc\\Scramble\\Exceptions\\RouteAwareTrait' => $vendorDir . '/dedoc/scramble/src/Exceptions/RouteAwareTrait.php',
'Dedoc\\Scramble\\Exceptions\\RulesEvaluationException' => $vendorDir . '/dedoc/scramble/src/Exceptions/RulesEvaluationException.php',
'Dedoc\\Scramble\\Extensions\\ExceptionToResponseExtension' => $vendorDir . '/dedoc/scramble/src/Extensions/ExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Extensions\\OperationExtension' => $vendorDir . '/dedoc/scramble/src/Extensions/OperationExtension.php',
'Dedoc\\Scramble\\Extensions\\TypeToSchemaExtension' => $vendorDir . '/dedoc/scramble/src/Extensions/TypeToSchemaExtension.php',
'Dedoc\\Scramble\\Generator' => $vendorDir . '/dedoc/scramble/src/Generator.php',
'Dedoc\\Scramble\\GeneratorConfig' => $vendorDir . '/dedoc/scramble/src/GeneratorConfig.php',
'Dedoc\\Scramble\\Http\\Middleware\\RestrictedDocsAccess' => $vendorDir . '/dedoc/scramble/src/Http/Middleware/RestrictedDocsAccess.php',
'Dedoc\\Scramble\\Infer' => $vendorDir . '/dedoc/scramble/src/Infer.php',
'Dedoc\\Scramble\\Infer\\Analyzer\\ClassAnalyzer' => $vendorDir . '/dedoc/scramble/src/Infer/Analyzer/ClassAnalyzer.php',
'Dedoc\\Scramble\\Infer\\Analyzer\\MethodAnalyzer' => $vendorDir . '/dedoc/scramble/src/Infer/Analyzer/MethodAnalyzer.php',
'Dedoc\\Scramble\\Infer\\Analyzer\\PropertyAnalyzer' => $vendorDir . '/dedoc/scramble/src/Infer/Analyzer/PropertyAnalyzer.php',
'Dedoc\\Scramble\\Infer\\AutoResolvingArgumentTypeBag' => $vendorDir . '/dedoc/scramble/src/Infer/AutoResolvingArgumentTypeBag.php',
'Dedoc\\Scramble\\Infer\\Configuration\\ClassLike' => $vendorDir . '/dedoc/scramble/src/Infer/Configuration/ClassLike.php',
'Dedoc\\Scramble\\Infer\\Configuration\\ClassLikeAndChildren' => $vendorDir . '/dedoc/scramble/src/Infer/Configuration/ClassLikeAndChildren.php',
'Dedoc\\Scramble\\Infer\\Configuration\\DefinitionMatcher' => $vendorDir . '/dedoc/scramble/src/Infer/Configuration/DefinitionMatcher.php',
'Dedoc\\Scramble\\Infer\\Context' => $vendorDir . '/dedoc/scramble/src/Infer/Context.php',
'Dedoc\\Scramble\\Infer\\Contracts\\ArgumentTypeBag' => $vendorDir . '/dedoc/scramble/src/Infer/Contracts/ArgumentTypeBag.php',
'Dedoc\\Scramble\\Infer\\Contracts\\ClassDefinition' => $vendorDir . '/dedoc/scramble/src/Infer/Contracts/ClassDefinition.php',
'Dedoc\\Scramble\\Infer\\Contracts\\ClassDefinitionBuilder' => $vendorDir . '/dedoc/scramble/src/Infer/Contracts/ClassDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\Contracts\\FunctionLikeDefinitionBuilder' => $vendorDir . '/dedoc/scramble/src/Infer/Contracts/FunctionLikeDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\Contracts\\Index' => $vendorDir . '/dedoc/scramble/src/Infer/Contracts/Index.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\FunctionLikeAstDefinitionBuilder' => $vendorDir . '/dedoc/scramble/src/Infer/DefinitionBuilders/FunctionLikeAstDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\FunctionLikeDeclarationAstDefinitionBuilder' => $vendorDir . '/dedoc/scramble/src/Infer/DefinitionBuilders/FunctionLikeDeclarationAstDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\FunctionLikeDeclarationPhpDocDefinitionBuilder' => $vendorDir . '/dedoc/scramble/src/Infer/DefinitionBuilders/FunctionLikeDeclarationPhpDocDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\FunctionLikeReflectionDefinitionBuilder' => $vendorDir . '/dedoc/scramble/src/Infer/DefinitionBuilders/FunctionLikeReflectionDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\LazyClassReflectionDefinitionBuilder' => $vendorDir . '/dedoc/scramble/src/Infer/DefinitionBuilders/LazyClassReflectionDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\SelfOutTypeBuilder' => $vendorDir . '/dedoc/scramble/src/Infer/DefinitionBuilders/SelfOutTypeBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\ShallowClassReflectionDefinitionBuilder' => $vendorDir . '/dedoc/scramble/src/Infer/DefinitionBuilders/ShallowClassReflectionDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\Definition\\AttributeDefinition' => $vendorDir . '/dedoc/scramble/src/Infer/Definition/AttributeDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\ClassDefinition' => $vendorDir . '/dedoc/scramble/src/Infer/Definition/ClassDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\ClassPropertyDefinition' => $vendorDir . '/dedoc/scramble/src/Infer/Definition/ClassPropertyDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\FunctionLikeAstDefinition' => $vendorDir . '/dedoc/scramble/src/Infer/Definition/FunctionLikeAstDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\FunctionLikeDefinition' => $vendorDir . '/dedoc/scramble/src/Infer/Definition/FunctionLikeDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\LazyShallowClassDefinition' => $vendorDir . '/dedoc/scramble/src/Infer/Definition/LazyShallowClassDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\PendingDocComment' => $vendorDir . '/dedoc/scramble/src/Infer/Definition/PendingDocComment.php',
'Dedoc\\Scramble\\Infer\\Definition\\PropertyVisibility' => $vendorDir . '/dedoc/scramble/src/Infer/Definition/PropertyVisibility.php',
'Dedoc\\Scramble\\Infer\\Definition\\ShallowClassDefinition' => $vendorDir . '/dedoc/scramble/src/Infer/Definition/ShallowClassDefinition.php',
'Dedoc\\Scramble\\Infer\\Extensions\\AfterClassDefinitionCreatedExtension' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/AfterClassDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\AfterSideEffectCallAnalyzed' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/AfterSideEffectCallAnalyzed.php',
'Dedoc\\Scramble\\Infer\\Extensions\\AnyMethodReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/AnyMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\AnyMethodCallEvent' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/Event/AnyMethodCallEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\ClassDefinitionCreatedEvent' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/Event/ClassDefinitionCreatedEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\Concerns\\ArgumentTypesAware' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/Event/Concerns/ArgumentTypesAware.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\FunctionCallEvent' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/Event/FunctionCallEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\MethodCallEvent' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/Event/MethodCallEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\PropertyFetchEvent' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/Event/PropertyFetchEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\ReferenceResolutionEvent' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/Event/ReferenceResolutionEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\SideEffectCallEvent' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/Event/SideEffectCallEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\StaticMethodCallEvent' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/Event/StaticMethodCallEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\ExpressionExceptionExtension' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/ExpressionExceptionExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\ExpressionTypeInferExtension' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/ExpressionTypeInferExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\ExtensionsBroker' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/ExtensionsBroker.php',
'Dedoc\\Scramble\\Infer\\Extensions\\FunctionReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/FunctionReturnTypeExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\IndexBuildingBroker' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/IndexBuildingBroker.php',
'Dedoc\\Scramble\\Infer\\Extensions\\InferExtension' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/InferExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\MethodCallExceptionsExtension' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/MethodCallExceptionsExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\MethodReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/MethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\PropertyTypeExtension' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/PropertyTypeExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\ResolvingType' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/ResolvingType.php',
'Dedoc\\Scramble\\Infer\\Extensions\\StaticMethodReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/StaticMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\TypeResolverExtension' => $vendorDir . '/dedoc/scramble/src/Infer/Extensions/TypeResolverExtension.php',
'Dedoc\\Scramble\\Infer\\FlowBuilder' => $vendorDir . '/dedoc/scramble/src/Infer/FlowBuilder.php',
'Dedoc\\Scramble\\Infer\\Flow\\AbstractNode' => $vendorDir . '/dedoc/scramble/src/Infer/Flow/AbstractNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\ConditionNode' => $vendorDir . '/dedoc/scramble/src/Infer/Flow/ConditionNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\Edge' => $vendorDir . '/dedoc/scramble/src/Infer/Flow/Edge.php',
'Dedoc\\Scramble\\Infer\\Flow\\ExpressionTypeInferrer' => $vendorDir . '/dedoc/scramble/src/Infer/Flow/ExpressionTypeInferrer.php',
'Dedoc\\Scramble\\Infer\\Flow\\MergeNode' => $vendorDir . '/dedoc/scramble/src/Infer/Flow/MergeNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\Node' => $vendorDir . '/dedoc/scramble/src/Infer/Flow/Node.php',
'Dedoc\\Scramble\\Infer\\Flow\\Nodes' => $vendorDir . '/dedoc/scramble/src/Infer/Flow/Nodes.php',
'Dedoc\\Scramble\\Infer\\Flow\\StartNode' => $vendorDir . '/dedoc/scramble/src/Infer/Flow/StartNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\StatementNode' => $vendorDir . '/dedoc/scramble/src/Infer/Flow/StatementNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\TerminateNode' => $vendorDir . '/dedoc/scramble/src/Infer/Flow/TerminateNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\TerminationKind' => $vendorDir . '/dedoc/scramble/src/Infer/Flow/TerminationKind.php',
'Dedoc\\Scramble\\Infer\\Handler\\ArrayHandler' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/ArrayHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\ArrayItemHandler' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/ArrayItemHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\AssignHandler' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/AssignHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\ClassHandler' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/ClassHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\CreatesScope' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/CreatesScope.php',
'Dedoc\\Scramble\\Infer\\Handler\\ExceptionInferringExtensions' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/ExceptionInferringExtensions.php',
'Dedoc\\Scramble\\Infer\\Handler\\ExpressionTypeInferringExtensions' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/ExpressionTypeInferringExtensions.php',
'Dedoc\\Scramble\\Infer\\Handler\\FunctionLikeHandler' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/FunctionLikeHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\IndexBuildingHandler' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/IndexBuildingHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\PhpDocHandler' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/PhpDocHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\PropertyHandler' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/PropertyHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\ReturnHandler' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/ReturnHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\ThrowHandler' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/ThrowHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\UnsetHandler' => $vendorDir . '/dedoc/scramble/src/Infer/Handler/UnsetHandler.php',
'Dedoc\\Scramble\\Infer\\Reflector\\ClassReflector' => $vendorDir . '/dedoc/scramble/src/Infer/Reflector/ClassReflector.php',
'Dedoc\\Scramble\\Infer\\Reflector\\ClosureReflector' => $vendorDir . '/dedoc/scramble/src/Infer/Reflector/ClosureReflector.php',
'Dedoc\\Scramble\\Infer\\Reflector\\MethodReflector' => $vendorDir . '/dedoc/scramble/src/Infer/Reflector/MethodReflector.php',
'Dedoc\\Scramble\\Infer\\Reflector\\PropertyReflector' => $vendorDir . '/dedoc/scramble/src/Infer/Reflector/PropertyReflector.php',
'Dedoc\\Scramble\\Infer\\Scope\\GlobalScope' => $vendorDir . '/dedoc/scramble/src/Infer/Scope/GlobalScope.php',
'Dedoc\\Scramble\\Infer\\Scope\\Index' => $vendorDir . '/dedoc/scramble/src/Infer/Scope/Index.php',
'Dedoc\\Scramble\\Infer\\Scope\\LazyShallowReflectionIndex' => $vendorDir . '/dedoc/scramble/src/Infer/Scope/LazyShallowReflectionIndex.php',
'Dedoc\\Scramble\\Infer\\Scope\\NodeTypesResolver' => $vendorDir . '/dedoc/scramble/src/Infer/Scope/NodeTypesResolver.php',
'Dedoc\\Scramble\\Infer\\Scope\\Scope' => $vendorDir . '/dedoc/scramble/src/Infer/Scope/Scope.php',
'Dedoc\\Scramble\\Infer\\Scope\\ScopeContext' => $vendorDir . '/dedoc/scramble/src/Infer/Scope/ScopeContext.php',
'Dedoc\\Scramble\\Infer\\Services\\ConstFetchTypeGetter' => $vendorDir . '/dedoc/scramble/src/Infer/Services/ConstFetchTypeGetter.php',
'Dedoc\\Scramble\\Infer\\Services\\FileNameResolver' => $vendorDir . '/dedoc/scramble/src/Infer/Services/FileNameResolver.php',
'Dedoc\\Scramble\\Infer\\Services\\FileParser' => $vendorDir . '/dedoc/scramble/src/Infer/Services/FileParser.php',
'Dedoc\\Scramble\\Infer\\Services\\FileParserResult' => $vendorDir . '/dedoc/scramble/src/Infer/Services/FileParserResult.php',
'Dedoc\\Scramble\\Infer\\Services\\KeyedArrayUnpackingTypeVisitor' => $vendorDir . '/dedoc/scramble/src/Infer/Services/KeyedArrayUnpackingTypeVisitor.php',
'Dedoc\\Scramble\\Infer\\Services\\LateTypeResolvingTypeVisitor' => $vendorDir . '/dedoc/scramble/src/Infer/Services/LateTypeResolvingTypeVisitor.php',
'Dedoc\\Scramble\\Infer\\Services\\RecursionGuard' => $vendorDir . '/dedoc/scramble/src/Infer/Services/RecursionGuard.php',
'Dedoc\\Scramble\\Infer\\Services\\ReferenceTypeResolver' => $vendorDir . '/dedoc/scramble/src/Infer/Services/ReferenceTypeResolver.php',
'Dedoc\\Scramble\\Infer\\Services\\ShallowTypeResolver' => $vendorDir . '/dedoc/scramble/src/Infer/Services/ShallowTypeResolver.php',
'Dedoc\\Scramble\\Infer\\Services\\TemplateTypesSolver' => $vendorDir . '/dedoc/scramble/src/Infer/Services/TemplateTypesSolver.php',
'Dedoc\\Scramble\\Infer\\Services\\TemplatesMap' => $vendorDir . '/dedoc/scramble/src/Infer/Services/TemplatesMap.php',
'Dedoc\\Scramble\\Infer\\Services\\UnionNormalizingTypeVisitor' => $vendorDir . '/dedoc/scramble/src/Infer/Services/UnionNormalizingTypeVisitor.php',
'Dedoc\\Scramble\\Infer\\SimpleTypeGetters\\BooleanNotTypeGetter' => $vendorDir . '/dedoc/scramble/src/Infer/SimpleTypeGetters/BooleanNotTypeGetter.php',
'Dedoc\\Scramble\\Infer\\SimpleTypeGetters\\CastTypeGetter' => $vendorDir . '/dedoc/scramble/src/Infer/SimpleTypeGetters/CastTypeGetter.php',
'Dedoc\\Scramble\\Infer\\SimpleTypeGetters\\ClassConstFetchTypeGetter' => $vendorDir . '/dedoc/scramble/src/Infer/SimpleTypeGetters/ClassConstFetchTypeGetter.php',
'Dedoc\\Scramble\\Infer\\SimpleTypeGetters\\ConstFetchTypeGetter' => $vendorDir . '/dedoc/scramble/src/Infer/SimpleTypeGetters/ConstFetchTypeGetter.php',
'Dedoc\\Scramble\\Infer\\SimpleTypeGetters\\ScalarTypeGetter' => $vendorDir . '/dedoc/scramble/src/Infer/SimpleTypeGetters/ScalarTypeGetter.php',
'Dedoc\\Scramble\\Infer\\TypeInferer' => $vendorDir . '/dedoc/scramble/src/Infer/TypeInferer.php',
'Dedoc\\Scramble\\Infer\\UnresolvableArgumentTypeBag' => $vendorDir . '/dedoc/scramble/src/Infer/UnresolvableArgumentTypeBag.php',
'Dedoc\\Scramble\\Infer\\Visitors\\PhpDocResolver' => $vendorDir . '/dedoc/scramble/src/Infer/Visitors/PhpDocResolver.php',
'Dedoc\\Scramble\\OpenApiContext' => $vendorDir . '/dedoc/scramble/src/OpenApiContext.php',
'Dedoc\\Scramble\\OpenApiTraverser' => $vendorDir . '/dedoc/scramble/src/OpenApiTraverser.php',
'Dedoc\\Scramble\\OpenApiVisitor' => $vendorDir . '/dedoc/scramble/src/OpenApiVisitor.php',
'Dedoc\\Scramble\\OpenApiVisitor\\SchemaEnforceVisitor' => $vendorDir . '/dedoc/scramble/src/OpenApiVisitor/SchemaEnforceVisitor.php',
'Dedoc\\Scramble\\PhpDoc\\AbstractPhpDocTypeVisitor' => $vendorDir . '/dedoc/scramble/src/PhpDoc/AbstractPhpDocTypeVisitor.php',
'Dedoc\\Scramble\\PhpDoc\\PhpDocParser' => $vendorDir . '/dedoc/scramble/src/PhpDoc/PhpDocParser.php',
'Dedoc\\Scramble\\PhpDoc\\PhpDocTypeHelper' => $vendorDir . '/dedoc/scramble/src/PhpDoc/PhpDocTypeHelper.php',
'Dedoc\\Scramble\\PhpDoc\\PhpDocTypeVisitor' => $vendorDir . '/dedoc/scramble/src/PhpDoc/PhpDocTypeVisitor.php',
'Dedoc\\Scramble\\PhpDoc\\PhpDocTypeWalker' => $vendorDir . '/dedoc/scramble/src/PhpDoc/PhpDocTypeWalker.php',
'Dedoc\\Scramble\\PhpDoc\\ResolveFqnPhpDocTypeVisitor' => $vendorDir . '/dedoc/scramble/src/PhpDoc/ResolveFqnPhpDocTypeVisitor.php',
'Dedoc\\Scramble\\Reflection\\JsonApiRelationship' => $vendorDir . '/dedoc/scramble/src/Reflection/JsonApiRelationship.php',
'Dedoc\\Scramble\\Reflection\\ReflectionJsonApiResource' => $vendorDir . '/dedoc/scramble/src/Reflection/ReflectionJsonApiResource.php',
'Dedoc\\Scramble\\Reflection\\ReflectionModel' => $vendorDir . '/dedoc/scramble/src/Reflection/ReflectionModel.php',
'Dedoc\\Scramble\\Reflection\\ReflectionRoute' => $vendorDir . '/dedoc/scramble/src/Reflection/ReflectionRoute.php',
'Dedoc\\Scramble\\RuleTransformers\\ConfirmedRule' => $vendorDir . '/dedoc/scramble/src/RuleTransformers/ConfirmedRule.php',
'Dedoc\\Scramble\\RuleTransformers\\EnumRule' => $vendorDir . '/dedoc/scramble/src/RuleTransformers/EnumRule.php',
'Dedoc\\Scramble\\RuleTransformers\\ExistsRule' => $vendorDir . '/dedoc/scramble/src/RuleTransformers/ExistsRule.php',
'Dedoc\\Scramble\\RuleTransformers\\InRule' => $vendorDir . '/dedoc/scramble/src/RuleTransformers/InRule.php',
'Dedoc\\Scramble\\RuleTransformers\\RegexRule' => $vendorDir . '/dedoc/scramble/src/RuleTransformers/RegexRule.php',
'Dedoc\\Scramble\\SchemaValidator' => $vendorDir . '/dedoc/scramble/src/SchemaValidator.php',
'Dedoc\\Scramble\\Scramble' => $vendorDir . '/dedoc/scramble/src/Scramble.php',
'Dedoc\\Scramble\\ScrambleServiceProvider' => $vendorDir . '/dedoc/scramble/src/ScrambleServiceProvider.php',
'Dedoc\\Scramble\\SecurityDocumentation\\MiddlewareAuthSecurityStrategy' => $vendorDir . '/dedoc/scramble/src/SecurityDocumentation/MiddlewareAuthSecurityStrategy.php',
'Dedoc\\Scramble\\Support\\ContainerUtils' => $vendorDir . '/dedoc/scramble/src/Support/ContainerUtils.php',
'Dedoc\\Scramble\\Support\\ExceptionToResponseExtensions\\AuthenticationExceptionToResponseExtension' => $vendorDir . '/dedoc/scramble/src/Support/ExceptionToResponseExtensions/AuthenticationExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Support\\ExceptionToResponseExtensions\\AuthorizationExceptionToResponseExtension' => $vendorDir . '/dedoc/scramble/src/Support/ExceptionToResponseExtensions/AuthorizationExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Support\\ExceptionToResponseExtensions\\HttpExceptionToResponseExtension' => $vendorDir . '/dedoc/scramble/src/Support/ExceptionToResponseExtensions/HttpExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Support\\ExceptionToResponseExtensions\\NotFoundExceptionToResponseExtension' => $vendorDir . '/dedoc/scramble/src/Support/ExceptionToResponseExtensions/NotFoundExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Support\\ExceptionToResponseExtensions\\ValidationExceptionToResponseExtension' => $vendorDir . '/dedoc/scramble/src/Support/ExceptionToResponseExtensions/ValidationExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Support\\Factories\\JsonApiQueryParameterFactory' => $vendorDir . '/dedoc/scramble/src/Support/Factories/JsonApiQueryParameterFactory.php',
'Dedoc\\Scramble\\Support\\Generator\\ClassBasedReference' => $vendorDir . '/dedoc/scramble/src/Support/Generator/ClassBasedReference.php',
'Dedoc\\Scramble\\Support\\Generator\\Combined\\AllOf' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Combined/AllOf.php',
'Dedoc\\Scramble\\Support\\Generator\\Combined\\AnyOf' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Combined/AnyOf.php',
'Dedoc\\Scramble\\Support\\Generator\\Components' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Components.php',
'Dedoc\\Scramble\\Support\\Generator\\Encoding' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Encoding.php',
'Dedoc\\Scramble\\Support\\Generator\\Example' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Example.php',
'Dedoc\\Scramble\\Support\\Generator\\Header' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Header.php',
'Dedoc\\Scramble\\Support\\Generator\\InfoObject' => $vendorDir . '/dedoc/scramble/src/Support/Generator/InfoObject.php',
'Dedoc\\Scramble\\Support\\Generator\\Link' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Link.php',
'Dedoc\\Scramble\\Support\\Generator\\MediaType' => $vendorDir . '/dedoc/scramble/src/Support/Generator/MediaType.php',
'Dedoc\\Scramble\\Support\\Generator\\MissingExample' => $vendorDir . '/dedoc/scramble/src/Support/Generator/MissingExample.php',
'Dedoc\\Scramble\\Support\\Generator\\MissingValue' => $vendorDir . '/dedoc/scramble/src/Support/Generator/MissingValue.php',
'Dedoc\\Scramble\\Support\\Generator\\OpenApi' => $vendorDir . '/dedoc/scramble/src/Support/Generator/OpenApi.php',
'Dedoc\\Scramble\\Support\\Generator\\Operation' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Operation.php',
'Dedoc\\Scramble\\Support\\Generator\\Parameter' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Parameter.php',
'Dedoc\\Scramble\\Support\\Generator\\Path' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Path.php',
'Dedoc\\Scramble\\Support\\Generator\\Reference' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Reference.php',
'Dedoc\\Scramble\\Support\\Generator\\RequestBodyObject' => $vendorDir . '/dedoc/scramble/src/Support/Generator/RequestBodyObject.php',
'Dedoc\\Scramble\\Support\\Generator\\Response' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Response.php',
'Dedoc\\Scramble\\Support\\Generator\\Schema' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Schema.php',
'Dedoc\\Scramble\\Support\\Generator\\SecurityRequirement' => $vendorDir . '/dedoc/scramble/src/Support/Generator/SecurityRequirement.php',
'Dedoc\\Scramble\\Support\\Generator\\SecurityScheme' => $vendorDir . '/dedoc/scramble/src/Support/Generator/SecurityScheme.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\ApiKeySecurityScheme' => $vendorDir . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/ApiKeySecurityScheme.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\HttpSecurityScheme' => $vendorDir . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/HttpSecurityScheme.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\OAuthFlow' => $vendorDir . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/OAuthFlow.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\OAuthFlows' => $vendorDir . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/OAuthFlows.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\Oauth2SecurityScheme' => $vendorDir . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/Oauth2SecurityScheme.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\OpenIdConnectUrlSecurityScheme' => $vendorDir . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/OpenIdConnectUrlSecurityScheme.php',
'Dedoc\\Scramble\\Support\\Generator\\Server' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Server.php',
'Dedoc\\Scramble\\Support\\Generator\\ServerVariable' => $vendorDir . '/dedoc/scramble/src/Support/Generator/ServerVariable.php',
'Dedoc\\Scramble\\Support\\Generator\\Tag' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Tag.php',
'Dedoc\\Scramble\\Support\\Generator\\TypeTransformer' => $vendorDir . '/dedoc/scramble/src/Support/Generator/TypeTransformer.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\ArrayType' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Types/ArrayType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\BooleanType' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Types/BooleanType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\IntegerType' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Types/IntegerType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\MixedType' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Types/MixedType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\NullType' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Types/NullType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\NumberType' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Types/NumberType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\ObjectType' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Types/ObjectType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\StringType' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Types/StringType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\Type' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Types/Type.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\UnknownType' => $vendorDir . '/dedoc/scramble/src/Support/Generator/Types/UnknownType.php',
'Dedoc\\Scramble\\Support\\Generator\\UniqueNameOptions' => $vendorDir . '/dedoc/scramble/src/Support/Generator/UniqueNameOptions.php',
'Dedoc\\Scramble\\Support\\Generator\\UniqueNamesOptionsCollection' => $vendorDir . '/dedoc/scramble/src/Support/Generator/UniqueNamesOptionsCollection.php',
'Dedoc\\Scramble\\Support\\Generator\\WithAttributes' => $vendorDir . '/dedoc/scramble/src/Support/Generator/WithAttributes.php',
'Dedoc\\Scramble\\Support\\Generator\\WithExtensions' => $vendorDir . '/dedoc/scramble/src/Support/Generator/WithExtensions.php',
'Dedoc\\Scramble\\Support\\Helpers\\ExamplesExtractor' => $vendorDir . '/dedoc/scramble/src/Support/Helpers/ExamplesExtractor.php',
'Dedoc\\Scramble\\Support\\Helpers\\JsonResourceHelper' => $vendorDir . '/dedoc/scramble/src/Support/Helpers/JsonResourceHelper.php',
'Dedoc\\Scramble\\Support\\IndexBuilders\\Bag' => $vendorDir . '/dedoc/scramble/src/Support/IndexBuilders/Bag.php',
'Dedoc\\Scramble\\Support\\IndexBuilders\\IndexBuilder' => $vendorDir . '/dedoc/scramble/src/Support/IndexBuilders/IndexBuilder.php',
'Dedoc\\Scramble\\Support\\IndexBuilders\\PaginatorsCandidatesBuilder' => $vendorDir . '/dedoc/scramble/src/Support/IndexBuilders/PaginatorsCandidatesBuilder.php',
'Dedoc\\Scramble\\Support\\IndexBuilders\\RequestParametersBuilder' => $vendorDir . '/dedoc/scramble/src/Support/IndexBuilders/RequestParametersBuilder.php',
'Dedoc\\Scramble\\Support\\IndexBuilders\\ScopeCollector' => $vendorDir . '/dedoc/scramble/src/Support/IndexBuilders/ScopeCollector.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AbortHelpersExceptionInfer' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/AbortHelpersExceptionInfer.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterAnonymousResourceCollectionDefinitionCreatedExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/AfterAnonymousResourceCollectionDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterEloquentCollectionDefinitionCreatedExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/AfterEloquentCollectionDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterJsonApiResourceDefinitionCreatedExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/AfterJsonApiResourceDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterJsonResourceDefinitionCreatedExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/AfterJsonResourceDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterResourceCollectionDefinitionCreatedExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/AfterResourceCollectionDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterResponseDefinitionCreatedExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/AfterResponseDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ArrayMergeReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/ArrayMergeReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\BinaryFileResponseTypeFactory' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/BinaryFileResponseTypeFactory.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\EloquentBuilderExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/EloquentBuilderExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\FacadeStaticMethodReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/FacadeStaticMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\JsonApiResourceCollectionMethodReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/JsonApiResourceCollectionMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\JsonApiResourceMethodReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/JsonApiResourceMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\JsonResourceExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/JsonResourceExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\JsonResponseMethodReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/JsonResponseMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ModelCollectionTypeResolver' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/ModelCollectionTypeResolver.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ModelExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/ModelExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\PaginateMethodsReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/PaginateMethodsReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\PossibleExceptionInfer' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/PossibleExceptionInfer.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\RequestExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/RequestExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ResourceCollectionTypeInfer' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/ResourceCollectionTypeInfer.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ResourceResponseMethodReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/ResourceResponseMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ResponseFactoryTypeInfer' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/ResponseFactoryTypeInfer.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ShallowFunctionDefinition' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/ShallowFunctionDefinition.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\TransformsToResourceCollectionExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/TransformsToResourceCollectionExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\TranslationReturnTypeExtension' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/TranslationReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\TypeTraceInfer' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/TypeTraceInfer.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ValidatorTypeInfer' => $vendorDir . '/dedoc/scramble/src/Support/InferExtensions/ValidatorTypeInfer.php',
'Dedoc\\Scramble\\Support\\OperationBuilder' => $vendorDir . '/dedoc/scramble/src/Support/OperationBuilder.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\DeprecationExtension' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/DeprecationExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ErrorResponsesExtension' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ErrorResponsesExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\AttributesParametersExtractor' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/AttributesParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\FormRequestParametersExtractor' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/FormRequestParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\InferredParameter' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/InferredParameter.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\JsonApiResourceParametersExtractor' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/JsonApiResourceParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\MethodCallsParametersExtractor' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/MethodCallsParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\ParameterExtractor' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/ParameterExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\PathParametersExtractor' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/PathParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\RulesDocumentationRetriever' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/RulesDocumentationRetriever.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\RulesNodes' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/RulesNodes.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\TypeBasedRulesDocumentationRetriever' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/TypeBasedRulesDocumentationRetriever.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\ValidateCallParametersExtractor' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/ValidateCallParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RequestBodyExtension' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RequestBodyExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RequestEssentialsExtension' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RequestEssentialsExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ResponseExtension' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ResponseExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ResponseHeadersExtension' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/ResponseHeadersExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\ComposedFormRequestRulesEvaluator' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/ComposedFormRequestRulesEvaluator.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\ConstFetchEvaluator' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/ConstFetchEvaluator.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\FormRequestRulesEvaluator' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/FormRequestRulesEvaluator.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\NodeRulesEvaluator' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/NodeRulesEvaluator.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\PublicProxy' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/PublicProxy.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\RulesEvaluator' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/RulesEvaluator.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\DeepParametersMerger' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/DeepParametersMerger.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\GeneratesParametersFromRules' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/GeneratesParametersFromRules.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\ParametersExtractionResult' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/ParametersExtractionResult.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\PhpDocSchemaTransformer' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/PhpDocSchemaTransformer.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\QueryParametersConverter' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/QueryParametersConverter.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\RulesMapper' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/RulesMapper.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\RulesToParameters' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/RulesToParameters.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\SchemaBagToParametersTransformer' => $vendorDir . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/SchemaBagToParametersTransformer.php',
'Dedoc\\Scramble\\Support\\PhpDoc' => $vendorDir . '/dedoc/scramble/src/Support/PhpDoc.php',
'Dedoc\\Scramble\\Support\\ResponseExtractor\\ModelInfo' => $vendorDir . '/dedoc/scramble/src/Support/ResponseExtractor/ModelInfo.php',
'Dedoc\\Scramble\\Support\\RouteInfo' => $vendorDir . '/dedoc/scramble/src/Support/RouteInfo.php',
'Dedoc\\Scramble\\Support\\RouteResponseTypeRetriever' => $vendorDir . '/dedoc/scramble/src/Support/RouteResponseTypeRetriever.php',
'Dedoc\\Scramble\\Support\\RuleTransforming\\NormalizedRule' => $vendorDir . '/dedoc/scramble/src/Support/RuleTransforming/NormalizedRule.php',
'Dedoc\\Scramble\\Support\\RuleTransforming\\RuleSetToSchemaTransformer' => $vendorDir . '/dedoc/scramble/src/Support/RuleTransforming/RuleSetToSchemaTransformer.php',
'Dedoc\\Scramble\\Support\\RuleTransforming\\RuleTransformerContext' => $vendorDir . '/dedoc/scramble/src/Support/RuleTransforming/RuleTransformerContext.php',
'Dedoc\\Scramble\\Support\\RuleTransforming\\SchemaBag' => $vendorDir . '/dedoc/scramble/src/Support/RuleTransforming/SchemaBag.php',
'Dedoc\\Scramble\\Support\\SchemaClassDocReflector' => $vendorDir . '/dedoc/scramble/src/Support/SchemaClassDocReflector.php',
'Dedoc\\Scramble\\Support\\ServerFactory' => $vendorDir . '/dedoc/scramble/src/Support/ServerFactory.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\CursorPaginatorTypeManager' => $vendorDir . '/dedoc/scramble/src/Support/TypeManagers/CursorPaginatorTypeManager.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\JsonApiResourceTypeManager' => $vendorDir . '/dedoc/scramble/src/Support/TypeManagers/JsonApiResourceTypeManager.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\LengthAwarePaginatorTypeManager' => $vendorDir . '/dedoc/scramble/src/Support/TypeManagers/LengthAwarePaginatorTypeManager.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\ManagesProperties' => $vendorDir . '/dedoc/scramble/src/Support/TypeManagers/ManagesProperties.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\PaginatorTypeManager' => $vendorDir . '/dedoc/scramble/src/Support/TypeManagers/PaginatorTypeManager.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\ResourceCollectionTypeManager' => $vendorDir . '/dedoc/scramble/src/Support/TypeManagers/ResourceCollectionTypeManager.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\AnonymousResourceCollectionTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/AnonymousResourceCollectionTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ArrayableToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ArrayableToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\BinaryFileResponseToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/BinaryFileResponseToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\CarbonInterfaceToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/CarbonInterfaceToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\CollectionToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/CollectionToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\CursorPaginatorTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/CursorPaginatorTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\EloquentCollectionToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/EloquentCollectionToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\EnumToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/EnumToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\FlattensMergeValues' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/FlattensMergeValues.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\HandlesJsonApiResourceResponse' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/HandlesJsonApiResourceResponse.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\JsonApiAnonymousCollectionTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/JsonApiAnonymousCollectionTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\JsonApiPaginatedResourceResponseToSchemaExtension' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/JsonApiPaginatedResourceResponseToSchemaExtension.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\JsonApiResourceResponseToSchemaExtension' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/JsonApiResourceResponseToSchemaExtension.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\JsonApiResourceTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/JsonApiResourceTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\JsonResourceTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/JsonResourceTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\LengthAwarePaginatorTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/LengthAwarePaginatorTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\MergesOpenApiObjects' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/MergesOpenApiObjects.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ModelToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ModelToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\PaginatedResourceResponseTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/PaginatedResourceResponseTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\PaginatorTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/PaginatorTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\PlainObjectToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/PlainObjectToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ResourceCollectionTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ResourceCollectionTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ResourceResponseTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ResourceResponseTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ResponsableTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ResponsableTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ResponseTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ResponseTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\StreamedResponseToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/StreamedResponseToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\VoidTypeToSchema' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/VoidTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\WithCollectedPaginatedItems' => $vendorDir . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/WithCollectedPaginatedItems.php',
'Dedoc\\Scramble\\Support\\Type\\AbstractType' => $vendorDir . '/dedoc/scramble/src/Support/Type/AbstractType.php',
'Dedoc\\Scramble\\Support\\Type\\AbstractTypeVisitor' => $vendorDir . '/dedoc/scramble/src/Support/Type/AbstractTypeVisitor.php',
'Dedoc\\Scramble\\Support\\Type\\ArrayItemType_' => $vendorDir . '/dedoc/scramble/src/Support/Type/ArrayItemType_.php',
'Dedoc\\Scramble\\Support\\Type\\ArrayType' => $vendorDir . '/dedoc/scramble/src/Support/Type/ArrayType.php',
'Dedoc\\Scramble\\Support\\Type\\BooleanType' => $vendorDir . '/dedoc/scramble/src/Support/Type/BooleanType.php',
'Dedoc\\Scramble\\Support\\Type\\CallableStringType' => $vendorDir . '/dedoc/scramble/src/Support/Type/CallableStringType.php',
'Dedoc\\Scramble\\Support\\Type\\CoalesceType' => $vendorDir . '/dedoc/scramble/src/Support/Type/CoalesceType.php',
'Dedoc\\Scramble\\Support\\Type\\Contracts\\Generic' => $vendorDir . '/dedoc/scramble/src/Support/Type/Contracts/Generic.php',
'Dedoc\\Scramble\\Support\\Type\\Contracts\\LateResolvingType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Contracts/LateResolvingType.php',
'Dedoc\\Scramble\\Support\\Type\\Contracts\\LiteralString' => $vendorDir . '/dedoc/scramble/src/Support/Type/Contracts/LiteralString.php',
'Dedoc\\Scramble\\Support\\Type\\Contracts\\LiteralType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Contracts/LiteralType.php',
'Dedoc\\Scramble\\Support\\Type\\EnumCaseType' => $vendorDir . '/dedoc/scramble/src/Support/Type/EnumCaseType.php',
'Dedoc\\Scramble\\Support\\Type\\FloatType' => $vendorDir . '/dedoc/scramble/src/Support/Type/FloatType.php',
'Dedoc\\Scramble\\Support\\Type\\FunctionLikeType' => $vendorDir . '/dedoc/scramble/src/Support/Type/FunctionLikeType.php',
'Dedoc\\Scramble\\Support\\Type\\FunctionType' => $vendorDir . '/dedoc/scramble/src/Support/Type/FunctionType.php',
'Dedoc\\Scramble\\Support\\Type\\Generic' => $vendorDir . '/dedoc/scramble/src/Support/Type/Generic.php',
'Dedoc\\Scramble\\Support\\Type\\GenericClassStringType' => $vendorDir . '/dedoc/scramble/src/Support/Type/GenericClassStringType.php',
'Dedoc\\Scramble\\Support\\Type\\IntegerRangeType' => $vendorDir . '/dedoc/scramble/src/Support/Type/IntegerRangeType.php',
'Dedoc\\Scramble\\Support\\Type\\IntegerType' => $vendorDir . '/dedoc/scramble/src/Support/Type/IntegerType.php',
'Dedoc\\Scramble\\Support\\Type\\IntersectionType' => $vendorDir . '/dedoc/scramble/src/Support/Type/IntersectionType.php',
'Dedoc\\Scramble\\Support\\Type\\KeyedArrayType' => $vendorDir . '/dedoc/scramble/src/Support/Type/KeyedArrayType.php',
'Dedoc\\Scramble\\Support\\Type\\Literal\\LiteralBooleanType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Literal/LiteralBooleanType.php',
'Dedoc\\Scramble\\Support\\Type\\Literal\\LiteralFloatType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Literal/LiteralFloatType.php',
'Dedoc\\Scramble\\Support\\Type\\Literal\\LiteralIntegerType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Literal/LiteralIntegerType.php',
'Dedoc\\Scramble\\Support\\Type\\Literal\\LiteralStringType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Literal/LiteralStringType.php',
'Dedoc\\Scramble\\Support\\Type\\MissingType' => $vendorDir . '/dedoc/scramble/src/Support/Type/MissingType.php',
'Dedoc\\Scramble\\Support\\Type\\MixedType' => $vendorDir . '/dedoc/scramble/src/Support/Type/MixedType.php',
'Dedoc\\Scramble\\Support\\Type\\NeverType' => $vendorDir . '/dedoc/scramble/src/Support/Type/NeverType.php',
'Dedoc\\Scramble\\Support\\Type\\NullType' => $vendorDir . '/dedoc/scramble/src/Support/Type/NullType.php',
'Dedoc\\Scramble\\Support\\Type\\ObjectType' => $vendorDir . '/dedoc/scramble/src/Support/Type/ObjectType.php',
'Dedoc\\Scramble\\Support\\Type\\OffsetAccessType' => $vendorDir . '/dedoc/scramble/src/Support/Type/OffsetAccessType.php',
'Dedoc\\Scramble\\Support\\Type\\OffsetSetType' => $vendorDir . '/dedoc/scramble/src/Support/Type/OffsetSetType.php',
'Dedoc\\Scramble\\Support\\Type\\OffsetUnsetType' => $vendorDir . '/dedoc/scramble/src/Support/Type/OffsetUnsetType.php',
'Dedoc\\Scramble\\Support\\Type\\RecursiveTemplateSolver' => $vendorDir . '/dedoc/scramble/src/Support/Type/RecursiveTemplateSolver.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\AbstractReferenceType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Reference/AbstractReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\CallableCallReferenceType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Reference/CallableCallReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\ConstFetchReferenceType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Reference/ConstFetchReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\MethodCallReferenceType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Reference/MethodCallReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\NewCallReferenceType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Reference/NewCallReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\PotentialMethodMutatingCallType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Reference/PotentialMethodMutatingCallType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\PropertyFetchReferenceType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Reference/PropertyFetchReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\StaticMethodCallReferenceType' => $vendorDir . '/dedoc/scramble/src/Support/Type/Reference/StaticMethodCallReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\StaticReference' => $vendorDir . '/dedoc/scramble/src/Support/Type/Reference/StaticReference.php',
'Dedoc\\Scramble\\Support\\Type\\SelfType' => $vendorDir . '/dedoc/scramble/src/Support/Type/SelfType.php',
'Dedoc\\Scramble\\Support\\Type\\StringType' => $vendorDir . '/dedoc/scramble/src/Support/Type/StringType.php',
'Dedoc\\Scramble\\Support\\Type\\TemplatePlaceholderType' => $vendorDir . '/dedoc/scramble/src/Support/Type/TemplatePlaceholderType.php',
'Dedoc\\Scramble\\Support\\Type\\TemplateType' => $vendorDir . '/dedoc/scramble/src/Support/Type/TemplateType.php',
'Dedoc\\Scramble\\Support\\Type\\TranslatedStringType' => $vendorDir . '/dedoc/scramble/src/Support/Type/TranslatedStringType.php',
'Dedoc\\Scramble\\Support\\Type\\Type' => $vendorDir . '/dedoc/scramble/src/Support/Type/Type.php',
'Dedoc\\Scramble\\Support\\Type\\TypeAttributes' => $vendorDir . '/dedoc/scramble/src/Support/Type/TypeAttributes.php',
'Dedoc\\Scramble\\Support\\Type\\TypeHelper' => $vendorDir . '/dedoc/scramble/src/Support/Type/TypeHelper.php',
'Dedoc\\Scramble\\Support\\Type\\TypePath' => $vendorDir . '/dedoc/scramble/src/Support/Type/TypePath.php',
'Dedoc\\Scramble\\Support\\Type\\TypePathFindingVisitor' => $vendorDir . '/dedoc/scramble/src/Support/Type/TypePathFindingVisitor.php',
'Dedoc\\Scramble\\Support\\Type\\TypePathItem' => $vendorDir . '/dedoc/scramble/src/Support/Type/TypePathItem.php',
'Dedoc\\Scramble\\Support\\Type\\TypePathItemCondition' => $vendorDir . '/dedoc/scramble/src/Support/Type/TypePathItemCondition.php',
'Dedoc\\Scramble\\Support\\Type\\TypeTraverser' => $vendorDir . '/dedoc/scramble/src/Support/Type/TypeTraverser.php',
'Dedoc\\Scramble\\Support\\Type\\TypeVisitor' => $vendorDir . '/dedoc/scramble/src/Support/Type/TypeVisitor.php',
'Dedoc\\Scramble\\Support\\Type\\TypeWalker' => $vendorDir . '/dedoc/scramble/src/Support/Type/TypeWalker.php',
'Dedoc\\Scramble\\Support\\Type\\TypeWidener' => $vendorDir . '/dedoc/scramble/src/Support/Type/TypeWidener.php',
'Dedoc\\Scramble\\Support\\Type\\Union' => $vendorDir . '/dedoc/scramble/src/Support/Type/Union.php',
'Dedoc\\Scramble\\Support\\Type\\UnknownType' => $vendorDir . '/dedoc/scramble/src/Support/Type/UnknownType.php',
'Dedoc\\Scramble\\Support\\Type\\VoidType' => $vendorDir . '/dedoc/scramble/src/Support/Type/VoidType.php',
'DeepCopy\\DeepCopy' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/DeepCopy.php',
'DeepCopy\\Exception\\CloneException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php',
'DeepCopy\\Exception\\PropertyException' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php',
@@ -2484,18 +2918,6 @@ return array(
'Illuminate\\View\\ViewFinderInterface' => $vendorDir . '/laravel/framework/src/Illuminate/View/ViewFinderInterface.php',
'Illuminate\\View\\ViewName' => $vendorDir . '/laravel/framework/src/Illuminate/View/ViewName.php',
'Illuminate\\View\\ViewServiceProvider' => $vendorDir . '/laravel/framework/src/Illuminate/View/ViewServiceProvider.php',
'L5Swagger\\ConfigFactory' => $vendorDir . '/darkaonline/l5-swagger/src/ConfigFactory.php',
'L5Swagger\\Console\\GenerateDocsCommand' => $vendorDir . '/darkaonline/l5-swagger/src/Console/GenerateDocsCommand.php',
'L5Swagger\\CustomGeneratorInterface' => $vendorDir . '/darkaonline/l5-swagger/src/CustomGeneratorInterface.php',
'L5Swagger\\Exceptions\\L5SwaggerException' => $vendorDir . '/darkaonline/l5-swagger/src/Exceptions/L5SwaggerException.php',
'L5Swagger\\Generator' => $vendorDir . '/darkaonline/l5-swagger/src/Generator.php',
'L5Swagger\\GeneratorFactory' => $vendorDir . '/darkaonline/l5-swagger/src/GeneratorFactory.php',
'L5Swagger\\Http\\Controllers\\SwaggerAssetController' => $vendorDir . '/darkaonline/l5-swagger/src/Http/Controllers/SwaggerAssetController.php',
'L5Swagger\\Http\\Controllers\\SwaggerController' => $vendorDir . '/darkaonline/l5-swagger/src/Http/Controllers/SwaggerController.php',
'L5Swagger\\Http\\Middleware\\Config' => $vendorDir . '/darkaonline/l5-swagger/src/Http/Middleware/Config.php',
'L5Swagger\\L5SwaggerFacade' => $vendorDir . '/darkaonline/l5-swagger/src/L5SwaggerFacade.php',
'L5Swagger\\L5SwaggerServiceProvider' => $vendorDir . '/darkaonline/l5-swagger/src/L5SwaggerServiceProvider.php',
'L5Swagger\\SecurityDefinitions' => $vendorDir . '/darkaonline/l5-swagger/src/SecurityDefinitions.php',
'Laravel\\Pail\\Console\\Commands\\PailCommand' => $vendorDir . '/laravel/pail/src/Console/Commands/PailCommand.php',
'Laravel\\Pail\\Contracts\\Printer' => $vendorDir . '/laravel/pail/src/Contracts/Printer.php',
'Laravel\\Pail\\File' => $vendorDir . '/laravel/pail/src/File.php',
@@ -3378,149 +3800,6 @@ return array(
'NunoMaduro\\Collision\\Provider' => $vendorDir . '/nunomaduro/collision/src/Provider.php',
'NunoMaduro\\Collision\\SolutionsRepositories\\NullSolutionsRepository' => $vendorDir . '/nunomaduro/collision/src/SolutionsRepositories/NullSolutionsRepository.php',
'NunoMaduro\\Collision\\Writer' => $vendorDir . '/nunomaduro/collision/src/Writer.php',
'OpenApi\\Analysers\\AnalyserInterface' => $vendorDir . '/zircote/swagger-php/src/Analysers/AnalyserInterface.php',
'OpenApi\\Analysers\\AnnotationFactoryInterface' => $vendorDir . '/zircote/swagger-php/src/Analysers/AnnotationFactoryInterface.php',
'OpenApi\\Analysers\\AttributeAnnotationFactory' => $vendorDir . '/zircote/swagger-php/src/Analysers/AttributeAnnotationFactory.php',
'OpenApi\\Analysers\\ComposerAutoloaderScanner' => $vendorDir . '/zircote/swagger-php/src/Analysers/ComposerAutoloaderScanner.php',
'OpenApi\\Analysers\\DocBlockAnnotationFactory' => $vendorDir . '/zircote/swagger-php/src/Analysers/DocBlockAnnotationFactory.php',
'OpenApi\\Analysers\\DocBlockParser' => $vendorDir . '/zircote/swagger-php/src/Analysers/DocBlockParser.php',
'OpenApi\\Analysers\\ReflectionAnalyser' => $vendorDir . '/zircote/swagger-php/src/Analysers/ReflectionAnalyser.php',
'OpenApi\\Analysers\\TokenScanner' => $vendorDir . '/zircote/swagger-php/src/Analysers/TokenScanner.php',
'OpenApi\\Analysis' => $vendorDir . '/zircote/swagger-php/src/Analysis.php',
'OpenApi\\Annotations\\AbstractAnnotation' => $vendorDir . '/zircote/swagger-php/src/Annotations/AbstractAnnotation.php',
'OpenApi\\Annotations\\AdditionalProperties' => $vendorDir . '/zircote/swagger-php/src/Annotations/AdditionalProperties.php',
'OpenApi\\Annotations\\Attachable' => $vendorDir . '/zircote/swagger-php/src/Annotations/Attachable.php',
'OpenApi\\Annotations\\Components' => $vendorDir . '/zircote/swagger-php/src/Annotations/Components.php',
'OpenApi\\Annotations\\Contact' => $vendorDir . '/zircote/swagger-php/src/Annotations/Contact.php',
'OpenApi\\Annotations\\CookieParameter' => $vendorDir . '/zircote/swagger-php/src/Annotations/CookieParameter.php',
'OpenApi\\Annotations\\Delete' => $vendorDir . '/zircote/swagger-php/src/Annotations/Delete.php',
'OpenApi\\Annotations\\Discriminator' => $vendorDir . '/zircote/swagger-php/src/Annotations/Discriminator.php',
'OpenApi\\Annotations\\Encoding' => $vendorDir . '/zircote/swagger-php/src/Annotations/Encoding.php',
'OpenApi\\Annotations\\Examples' => $vendorDir . '/zircote/swagger-php/src/Annotations/Examples.php',
'OpenApi\\Annotations\\ExternalDocumentation' => $vendorDir . '/zircote/swagger-php/src/Annotations/ExternalDocumentation.php',
'OpenApi\\Annotations\\Flow' => $vendorDir . '/zircote/swagger-php/src/Annotations/Flow.php',
'OpenApi\\Annotations\\Get' => $vendorDir . '/zircote/swagger-php/src/Annotations/Get.php',
'OpenApi\\Annotations\\Head' => $vendorDir . '/zircote/swagger-php/src/Annotations/Head.php',
'OpenApi\\Annotations\\Header' => $vendorDir . '/zircote/swagger-php/src/Annotations/Header.php',
'OpenApi\\Annotations\\HeaderParameter' => $vendorDir . '/zircote/swagger-php/src/Annotations/HeaderParameter.php',
'OpenApi\\Annotations\\Info' => $vendorDir . '/zircote/swagger-php/src/Annotations/Info.php',
'OpenApi\\Annotations\\Items' => $vendorDir . '/zircote/swagger-php/src/Annotations/Items.php',
'OpenApi\\Annotations\\JsonContent' => $vendorDir . '/zircote/swagger-php/src/Annotations/JsonContent.php',
'OpenApi\\Annotations\\JsonSchemaTrait' => $vendorDir . '/zircote/swagger-php/src/Annotations/JsonSchemaTrait.php',
'OpenApi\\Annotations\\License' => $vendorDir . '/zircote/swagger-php/src/Annotations/License.php',
'OpenApi\\Annotations\\Link' => $vendorDir . '/zircote/swagger-php/src/Annotations/Link.php',
'OpenApi\\Annotations\\MediaType' => $vendorDir . '/zircote/swagger-php/src/Annotations/MediaType.php',
'OpenApi\\Annotations\\OpenApi' => $vendorDir . '/zircote/swagger-php/src/Annotations/OpenApi.php',
'OpenApi\\Annotations\\Operation' => $vendorDir . '/zircote/swagger-php/src/Annotations/Operation.php',
'OpenApi\\Annotations\\Options' => $vendorDir . '/zircote/swagger-php/src/Annotations/Options.php',
'OpenApi\\Annotations\\Parameter' => $vendorDir . '/zircote/swagger-php/src/Annotations/Parameter.php',
'OpenApi\\Annotations\\Patch' => $vendorDir . '/zircote/swagger-php/src/Annotations/Patch.php',
'OpenApi\\Annotations\\PathItem' => $vendorDir . '/zircote/swagger-php/src/Annotations/PathItem.php',
'OpenApi\\Annotations\\PathParameter' => $vendorDir . '/zircote/swagger-php/src/Annotations/PathParameter.php',
'OpenApi\\Annotations\\Post' => $vendorDir . '/zircote/swagger-php/src/Annotations/Post.php',
'OpenApi\\Annotations\\Property' => $vendorDir . '/zircote/swagger-php/src/Annotations/Property.php',
'OpenApi\\Annotations\\Put' => $vendorDir . '/zircote/swagger-php/src/Annotations/Put.php',
'OpenApi\\Annotations\\Query' => $vendorDir . '/zircote/swagger-php/src/Annotations/Query.php',
'OpenApi\\Annotations\\QueryParameter' => $vendorDir . '/zircote/swagger-php/src/Annotations/QueryParameter.php',
'OpenApi\\Annotations\\RequestBody' => $vendorDir . '/zircote/swagger-php/src/Annotations/RequestBody.php',
'OpenApi\\Annotations\\Response' => $vendorDir . '/zircote/swagger-php/src/Annotations/Response.php',
'OpenApi\\Annotations\\Schema' => $vendorDir . '/zircote/swagger-php/src/Annotations/Schema.php',
'OpenApi\\Annotations\\SecurityScheme' => $vendorDir . '/zircote/swagger-php/src/Annotations/SecurityScheme.php',
'OpenApi\\Annotations\\Server' => $vendorDir . '/zircote/swagger-php/src/Annotations/Server.php',
'OpenApi\\Annotations\\ServerVariable' => $vendorDir . '/zircote/swagger-php/src/Annotations/ServerVariable.php',
'OpenApi\\Annotations\\Tag' => $vendorDir . '/zircote/swagger-php/src/Annotations/Tag.php',
'OpenApi\\Annotations\\Trace' => $vendorDir . '/zircote/swagger-php/src/Annotations/Trace.php',
'OpenApi\\Annotations\\Webhook' => $vendorDir . '/zircote/swagger-php/src/Annotations/Webhook.php',
'OpenApi\\Annotations\\Xml' => $vendorDir . '/zircote/swagger-php/src/Annotations/Xml.php',
'OpenApi\\Annotations\\XmlContent' => $vendorDir . '/zircote/swagger-php/src/Annotations/XmlContent.php',
'OpenApi\\Attributes\\AdditionalProperties' => $vendorDir . '/zircote/swagger-php/src/Attributes/AdditionalProperties.php',
'OpenApi\\Attributes\\Attachable' => $vendorDir . '/zircote/swagger-php/src/Attributes/Attachable.php',
'OpenApi\\Attributes\\Components' => $vendorDir . '/zircote/swagger-php/src/Attributes/Components.php',
'OpenApi\\Attributes\\Contact' => $vendorDir . '/zircote/swagger-php/src/Attributes/Contact.php',
'OpenApi\\Attributes\\CookieParameter' => $vendorDir . '/zircote/swagger-php/src/Attributes/CookieParameter.php',
'OpenApi\\Attributes\\Delete' => $vendorDir . '/zircote/swagger-php/src/Attributes/Delete.php',
'OpenApi\\Attributes\\Discriminator' => $vendorDir . '/zircote/swagger-php/src/Attributes/Discriminator.php',
'OpenApi\\Attributes\\Encoding' => $vendorDir . '/zircote/swagger-php/src/Attributes/Encoding.php',
'OpenApi\\Attributes\\Examples' => $vendorDir . '/zircote/swagger-php/src/Attributes/Examples.php',
'OpenApi\\Attributes\\ExternalDocumentation' => $vendorDir . '/zircote/swagger-php/src/Attributes/ExternalDocumentation.php',
'OpenApi\\Attributes\\Flow' => $vendorDir . '/zircote/swagger-php/src/Attributes/Flow.php',
'OpenApi\\Attributes\\Get' => $vendorDir . '/zircote/swagger-php/src/Attributes/Get.php',
'OpenApi\\Attributes\\Head' => $vendorDir . '/zircote/swagger-php/src/Attributes/Head.php',
'OpenApi\\Attributes\\Header' => $vendorDir . '/zircote/swagger-php/src/Attributes/Header.php',
'OpenApi\\Attributes\\HeaderParameter' => $vendorDir . '/zircote/swagger-php/src/Attributes/HeaderParameter.php',
'OpenApi\\Attributes\\Info' => $vendorDir . '/zircote/swagger-php/src/Attributes/Info.php',
'OpenApi\\Attributes\\Items' => $vendorDir . '/zircote/swagger-php/src/Attributes/Items.php',
'OpenApi\\Attributes\\JsonContent' => $vendorDir . '/zircote/swagger-php/src/Attributes/JsonContent.php',
'OpenApi\\Attributes\\License' => $vendorDir . '/zircote/swagger-php/src/Attributes/License.php',
'OpenApi\\Attributes\\Link' => $vendorDir . '/zircote/swagger-php/src/Attributes/Link.php',
'OpenApi\\Attributes\\MediaType' => $vendorDir . '/zircote/swagger-php/src/Attributes/MediaType.php',
'OpenApi\\Attributes\\OpenApi' => $vendorDir . '/zircote/swagger-php/src/Attributes/OpenApi.php',
'OpenApi\\Attributes\\OperationTrait' => $vendorDir . '/zircote/swagger-php/src/Attributes/OperationTrait.php',
'OpenApi\\Attributes\\Options' => $vendorDir . '/zircote/swagger-php/src/Attributes/Options.php',
'OpenApi\\Attributes\\Parameter' => $vendorDir . '/zircote/swagger-php/src/Attributes/Parameter.php',
'OpenApi\\Attributes\\ParameterTrait' => $vendorDir . '/zircote/swagger-php/src/Attributes/ParameterTrait.php',
'OpenApi\\Attributes\\Patch' => $vendorDir . '/zircote/swagger-php/src/Attributes/Patch.php',
'OpenApi\\Attributes\\PathItem' => $vendorDir . '/zircote/swagger-php/src/Attributes/PathItem.php',
'OpenApi\\Attributes\\PathParameter' => $vendorDir . '/zircote/swagger-php/src/Attributes/PathParameter.php',
'OpenApi\\Attributes\\Post' => $vendorDir . '/zircote/swagger-php/src/Attributes/Post.php',
'OpenApi\\Attributes\\Property' => $vendorDir . '/zircote/swagger-php/src/Attributes/Property.php',
'OpenApi\\Attributes\\Put' => $vendorDir . '/zircote/swagger-php/src/Attributes/Put.php',
'OpenApi\\Attributes\\Query' => $vendorDir . '/zircote/swagger-php/src/Attributes/Query.php',
'OpenApi\\Attributes\\QueryParameter' => $vendorDir . '/zircote/swagger-php/src/Attributes/QueryParameter.php',
'OpenApi\\Attributes\\RequestBody' => $vendorDir . '/zircote/swagger-php/src/Attributes/RequestBody.php',
'OpenApi\\Attributes\\Response' => $vendorDir . '/zircote/swagger-php/src/Attributes/Response.php',
'OpenApi\\Attributes\\Schema' => $vendorDir . '/zircote/swagger-php/src/Attributes/Schema.php',
'OpenApi\\Attributes\\SecurityScheme' => $vendorDir . '/zircote/swagger-php/src/Attributes/SecurityScheme.php',
'OpenApi\\Attributes\\Server' => $vendorDir . '/zircote/swagger-php/src/Attributes/Server.php',
'OpenApi\\Attributes\\ServerVariable' => $vendorDir . '/zircote/swagger-php/src/Attributes/ServerVariable.php',
'OpenApi\\Attributes\\Tag' => $vendorDir . '/zircote/swagger-php/src/Attributes/Tag.php',
'OpenApi\\Attributes\\Trace' => $vendorDir . '/zircote/swagger-php/src/Attributes/Trace.php',
'OpenApi\\Attributes\\Webhook' => $vendorDir . '/zircote/swagger-php/src/Attributes/Webhook.php',
'OpenApi\\Attributes\\Xml' => $vendorDir . '/zircote/swagger-php/src/Attributes/Xml.php',
'OpenApi\\Attributes\\XmlContent' => $vendorDir . '/zircote/swagger-php/src/Attributes/XmlContent.php',
'OpenApi\\Console\\GenerateCommand' => $vendorDir . '/zircote/swagger-php/src/Console/GenerateCommand.php',
'OpenApi\\Console\\GenerateFormat' => $vendorDir . '/zircote/swagger-php/src/Console/GenerateFormat.php',
'OpenApi\\Console\\GenerateInput' => $vendorDir . '/zircote/swagger-php/src/Console/GenerateInput.php',
'OpenApi\\Context' => $vendorDir . '/zircote/swagger-php/src/Context.php',
'OpenApi\\Generator' => $vendorDir . '/zircote/swagger-php/src/Generator.php',
'OpenApi\\GeneratorAwareInterface' => $vendorDir . '/zircote/swagger-php/src/GeneratorAwareInterface.php',
'OpenApi\\GeneratorAwareTrait' => $vendorDir . '/zircote/swagger-php/src/GeneratorAwareTrait.php',
'OpenApi\\Loggers\\DefaultLogger' => $vendorDir . '/zircote/swagger-php/src/Loggers/DefaultLogger.php',
'OpenApi\\OpenApiException' => $vendorDir . '/zircote/swagger-php/src/OpenApiException.php',
'OpenApi\\Pipeline' => $vendorDir . '/zircote/swagger-php/src/Pipeline.php',
'OpenApi\\Processors\\AugmentDiscriminators' => $vendorDir . '/zircote/swagger-php/src/Processors/AugmentDiscriminators.php',
'OpenApi\\Processors\\AugmentItems' => $vendorDir . '/zircote/swagger-php/src/Processors/AugmentItems.php',
'OpenApi\\Processors\\AugmentMediaType' => $vendorDir . '/zircote/swagger-php/src/Processors/AugmentMediaType.php',
'OpenApi\\Processors\\AugmentParameters' => $vendorDir . '/zircote/swagger-php/src/Processors/AugmentParameters.php',
'OpenApi\\Processors\\AugmentProperties' => $vendorDir . '/zircote/swagger-php/src/Processors/AugmentProperties.php',
'OpenApi\\Processors\\AugmentRefs' => $vendorDir . '/zircote/swagger-php/src/Processors/AugmentRefs.php',
'OpenApi\\Processors\\AugmentRequestBody' => $vendorDir . '/zircote/swagger-php/src/Processors/AugmentRequestBody.php',
'OpenApi\\Processors\\AugmentSchemas' => $vendorDir . '/zircote/swagger-php/src/Processors/AugmentSchemas.php',
'OpenApi\\Processors\\AugmentTags' => $vendorDir . '/zircote/swagger-php/src/Processors/AugmentTags.php',
'OpenApi\\Processors\\BuildPaths' => $vendorDir . '/zircote/swagger-php/src/Processors/BuildPaths.php',
'OpenApi\\Processors\\CleanUnmerged' => $vendorDir . '/zircote/swagger-php/src/Processors/CleanUnmerged.php',
'OpenApi\\Processors\\CleanUnusedComponents' => $vendorDir . '/zircote/swagger-php/src/Processors/CleanUnusedComponents.php',
'OpenApi\\Processors\\Concerns\\AnnotationTrait' => $vendorDir . '/zircote/swagger-php/src/Processors/Concerns/AnnotationTrait.php',
'OpenApi\\Processors\\Concerns\\DocblockTrait' => $vendorDir . '/zircote/swagger-php/src/Processors/Concerns/DocblockTrait.php',
'OpenApi\\Processors\\Concerns\\MergePropertiesTrait' => $vendorDir . '/zircote/swagger-php/src/Processors/Concerns/MergePropertiesTrait.php',
'OpenApi\\Processors\\Concerns\\RefTrait' => $vendorDir . '/zircote/swagger-php/src/Processors/Concerns/RefTrait.php',
'OpenApi\\Processors\\DocBlockDescriptions' => $vendorDir . '/zircote/swagger-php/src/Processors/DocBlockDescriptions.php',
'OpenApi\\Processors\\ExpandClasses' => $vendorDir . '/zircote/swagger-php/src/Processors/ExpandClasses.php',
'OpenApi\\Processors\\ExpandEnums' => $vendorDir . '/zircote/swagger-php/src/Processors/ExpandEnums.php',
'OpenApi\\Processors\\ExpandInterfaces' => $vendorDir . '/zircote/swagger-php/src/Processors/ExpandInterfaces.php',
'OpenApi\\Processors\\ExpandTraits' => $vendorDir . '/zircote/swagger-php/src/Processors/ExpandTraits.php',
'OpenApi\\Processors\\MergeIntoComponents' => $vendorDir . '/zircote/swagger-php/src/Processors/MergeIntoComponents.php',
'OpenApi\\Processors\\MergeIntoOpenApi' => $vendorDir . '/zircote/swagger-php/src/Processors/MergeIntoOpenApi.php',
'OpenApi\\Processors\\MergeJsonContent' => $vendorDir . '/zircote/swagger-php/src/Processors/MergeJsonContent.php',
'OpenApi\\Processors\\MergeXmlContent' => $vendorDir . '/zircote/swagger-php/src/Processors/MergeXmlContent.php',
'OpenApi\\Processors\\OperationId' => $vendorDir . '/zircote/swagger-php/src/Processors/OperationId.php',
'OpenApi\\Processors\\PathFilter' => $vendorDir . '/zircote/swagger-php/src/Processors/PathFilter.php',
'OpenApi\\Serializer' => $vendorDir . '/zircote/swagger-php/src/Serializer.php',
'OpenApi\\SourceFinder' => $vendorDir . '/zircote/swagger-php/src/SourceFinder.php',
'OpenApi\\TypeResolverInterface' => $vendorDir . '/zircote/swagger-php/src/TypeResolverInterface.php',
'OpenApi\\Type\\AbstractTypeResolver' => $vendorDir . '/zircote/swagger-php/src/Type/AbstractTypeResolver.php',
'OpenApi\\Type\\LegacyTypeResolver' => $vendorDir . '/zircote/swagger-php/src/Type/LegacyTypeResolver.php',
'OpenApi\\Type\\TypeInfoTypeResolver' => $vendorDir . '/zircote/swagger-php/src/Type/TypeInfoTypeResolver.php',
'Override' => $vendorDir . '/symfony/polyfill-php83/Resources/stubs/Override.php',
'PHPStan\\PhpDocParser\\Ast\\AbstractNodeVisitor' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/AbstractNodeVisitor.php',
'PHPStan\\PhpDocParser\\Ast\\Attribute' => $vendorDir . '/phpstan/phpdoc-parser/src/Ast/Attribute.php',
@@ -5302,13 +5581,6 @@ return array(
'Psy\\VersionUpdater\\IntervalChecker' => $vendorDir . '/psy/psysh/src/VersionUpdater/IntervalChecker.php',
'Psy\\VersionUpdater\\NoopChecker' => $vendorDir . '/psy/psysh/src/VersionUpdater/NoopChecker.php',
'Psy\\VersionUpdater\\SelfUpdate' => $vendorDir . '/psy/psysh/src/VersionUpdater/SelfUpdate.php',
'Radebatz\\TypeInfoExtras\\TypeFactoryTrait' => $vendorDir . '/radebatz/type-info-extras/src/TypeFactoryTrait.php',
'Radebatz\\TypeInfoExtras\\TypeResolver\\ResolverExtrasTrait' => $vendorDir . '/radebatz/type-info-extras/src/TypeResolver/ResolverExtrasTrait.php',
'Radebatz\\TypeInfoExtras\\TypeResolver\\StringTypeResolver' => $vendorDir . '/radebatz/type-info-extras/src/TypeResolver/StringTypeResolver.php',
'Radebatz\\TypeInfoExtras\\Type\\ClassLikeType' => $vendorDir . '/radebatz/type-info-extras/src/Type/ClassLikeType.php',
'Radebatz\\TypeInfoExtras\\Type\\ExplicitType' => $vendorDir . '/radebatz/type-info-extras/src/Type/ExplicitType.php',
'Radebatz\\TypeInfoExtras\\Type\\IntRangeType' => $vendorDir . '/radebatz/type-info-extras/src/Type/IntRangeType.php',
'Radebatz\\TypeInfoExtras\\Type\\Type' => $vendorDir . '/radebatz/type-info-extras/src/Type/Type.php',
'Ramsey\\Collection\\AbstractArray' => $vendorDir . '/ramsey/collection/src/AbstractArray.php',
'Ramsey\\Collection\\AbstractCollection' => $vendorDir . '/ramsey/collection/src/AbstractCollection.php',
'Ramsey\\Collection\\AbstractSet' => $vendorDir . '/ramsey/collection/src/AbstractSet.php',
@@ -5660,6 +5932,40 @@ return array(
'SebastianBergmann\\Type\\UnknownType' => $vendorDir . '/sebastian/type/src/type/UnknownType.php',
'SebastianBergmann\\Type\\VoidType' => $vendorDir . '/sebastian/type/src/type/VoidType.php',
'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
'Spatie\\LaravelPackageTools\\Commands\\Concerns\\AskToRunMigrations' => $vendorDir . '/spatie/laravel-package-tools/src/Commands/Concerns/AskToRunMigrations.php',
'Spatie\\LaravelPackageTools\\Commands\\Concerns\\AskToStarRepoOnGitHub' => $vendorDir . '/spatie/laravel-package-tools/src/Commands/Concerns/AskToStarRepoOnGitHub.php',
'Spatie\\LaravelPackageTools\\Commands\\Concerns\\PublishesResources' => $vendorDir . '/spatie/laravel-package-tools/src/Commands/Concerns/PublishesResources.php',
'Spatie\\LaravelPackageTools\\Commands\\Concerns\\SupportsServiceProviderInApp' => $vendorDir . '/spatie/laravel-package-tools/src/Commands/Concerns/SupportsServiceProviderInApp.php',
'Spatie\\LaravelPackageTools\\Commands\\Concerns\\SupportsStartWithEndWith' => $vendorDir . '/spatie/laravel-package-tools/src/Commands/Concerns/SupportsStartWithEndWith.php',
'Spatie\\LaravelPackageTools\\Commands\\InstallCommand' => $vendorDir . '/spatie/laravel-package-tools/src/Commands/InstallCommand.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessAssets' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessAssets.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessBladeComponents' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessBladeComponents.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessCommands' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessCommands.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessConfigs' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessConfigs.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessInertia' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessInertia.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessMigrations' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessMigrations.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessRoutes' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessRoutes.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessServiceProviders' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessServiceProviders.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessTranslations' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessTranslations.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessViewComposers' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessViewComposers.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessViewSharedData' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessViewSharedData.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessViews' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessViews.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasAssets' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasAssets.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasBladeComponents' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasBladeComponents.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasCommands' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasCommands.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasConfigs' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasConfigs.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasInertia' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasInertia.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasInstallCommand' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasInstallCommand.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasMigrations' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasMigrations.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasRoutes' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasRoutes.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasServiceProviders' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasServiceProviders.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasTranslations' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasTranslations.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasViewComposers' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasViewComposers.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasViewSharedData' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasViewSharedData.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasViews' => $vendorDir . '/spatie/laravel-package-tools/src/Concerns/Package/HasViews.php',
'Spatie\\LaravelPackageTools\\Exceptions\\InvalidPackage' => $vendorDir . '/spatie/laravel-package-tools/src/Exceptions/InvalidPackage.php',
'Spatie\\LaravelPackageTools\\Package' => $vendorDir . '/spatie/laravel-package-tools/src/Package.php',
'Spatie\\LaravelPackageTools\\PackageServiceProvider' => $vendorDir . '/spatie/laravel-package-tools/src/PackageServiceProvider.php',
'Stringable' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
'Symfony\\Component\\Clock\\Clock' => $vendorDir . '/symfony/clock/Clock.php',
'Symfony\\Component\\Clock\\ClockAwareTrait' => $vendorDir . '/symfony/clock/ClockAwareTrait.php',
@@ -6534,37 +6840,6 @@ return array(
'Symfony\\Component\\Translation\\Util\\XliffUtils' => $vendorDir . '/symfony/translation/Util/XliffUtils.php',
'Symfony\\Component\\Translation\\Writer\\TranslationWriter' => $vendorDir . '/symfony/translation/Writer/TranslationWriter.php',
'Symfony\\Component\\Translation\\Writer\\TranslationWriterInterface' => $vendorDir . '/symfony/translation/Writer/TranslationWriterInterface.php',
'Symfony\\Component\\TypeInfo\\Exception\\ExceptionInterface' => $vendorDir . '/symfony/type-info/Exception/ExceptionInterface.php',
'Symfony\\Component\\TypeInfo\\Exception\\InvalidArgumentException' => $vendorDir . '/symfony/type-info/Exception/InvalidArgumentException.php',
'Symfony\\Component\\TypeInfo\\Exception\\LogicException' => $vendorDir . '/symfony/type-info/Exception/LogicException.php',
'Symfony\\Component\\TypeInfo\\Exception\\RuntimeException' => $vendorDir . '/symfony/type-info/Exception/RuntimeException.php',
'Symfony\\Component\\TypeInfo\\Exception\\UnsupportedException' => $vendorDir . '/symfony/type-info/Exception/UnsupportedException.php',
'Symfony\\Component\\TypeInfo\\Type' => $vendorDir . '/symfony/type-info/Type.php',
'Symfony\\Component\\TypeInfo\\TypeContext\\TypeContext' => $vendorDir . '/symfony/type-info/TypeContext/TypeContext.php',
'Symfony\\Component\\TypeInfo\\TypeContext\\TypeContextFactory' => $vendorDir . '/symfony/type-info/TypeContext/TypeContextFactory.php',
'Symfony\\Component\\TypeInfo\\TypeFactoryTrait' => $vendorDir . '/symfony/type-info/TypeFactoryTrait.php',
'Symfony\\Component\\TypeInfo\\TypeIdentifier' => $vendorDir . '/symfony/type-info/TypeIdentifier.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\PhpDocAwareReflectionTypeResolver' => $vendorDir . '/symfony/type-info/TypeResolver/PhpDocAwareReflectionTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\ReflectionParameterTypeResolver' => $vendorDir . '/symfony/type-info/TypeResolver/ReflectionParameterTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\ReflectionPropertyTypeResolver' => $vendorDir . '/symfony/type-info/TypeResolver/ReflectionPropertyTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\ReflectionReturnTypeResolver' => $vendorDir . '/symfony/type-info/TypeResolver/ReflectionReturnTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\ReflectionTypeResolver' => $vendorDir . '/symfony/type-info/TypeResolver/ReflectionTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\StringTypeResolver' => $vendorDir . '/symfony/type-info/TypeResolver/StringTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\TypeResolver' => $vendorDir . '/symfony/type-info/TypeResolver/TypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\TypeResolverInterface' => $vendorDir . '/symfony/type-info/TypeResolver/TypeResolverInterface.php',
'Symfony\\Component\\TypeInfo\\Type\\ArrayShapeType' => $vendorDir . '/symfony/type-info/Type/ArrayShapeType.php',
'Symfony\\Component\\TypeInfo\\Type\\BackedEnumType' => $vendorDir . '/symfony/type-info/Type/BackedEnumType.php',
'Symfony\\Component\\TypeInfo\\Type\\BuiltinType' => $vendorDir . '/symfony/type-info/Type/BuiltinType.php',
'Symfony\\Component\\TypeInfo\\Type\\CollectionType' => $vendorDir . '/symfony/type-info/Type/CollectionType.php',
'Symfony\\Component\\TypeInfo\\Type\\CompositeTypeInterface' => $vendorDir . '/symfony/type-info/Type/CompositeTypeInterface.php',
'Symfony\\Component\\TypeInfo\\Type\\EnumType' => $vendorDir . '/symfony/type-info/Type/EnumType.php',
'Symfony\\Component\\TypeInfo\\Type\\GenericType' => $vendorDir . '/symfony/type-info/Type/GenericType.php',
'Symfony\\Component\\TypeInfo\\Type\\IntersectionType' => $vendorDir . '/symfony/type-info/Type/IntersectionType.php',
'Symfony\\Component\\TypeInfo\\Type\\NullableType' => $vendorDir . '/symfony/type-info/Type/NullableType.php',
'Symfony\\Component\\TypeInfo\\Type\\ObjectType' => $vendorDir . '/symfony/type-info/Type/ObjectType.php',
'Symfony\\Component\\TypeInfo\\Type\\TemplateType' => $vendorDir . '/symfony/type-info/Type/TemplateType.php',
'Symfony\\Component\\TypeInfo\\Type\\UnionType' => $vendorDir . '/symfony/type-info/Type/UnionType.php',
'Symfony\\Component\\TypeInfo\\Type\\WrappingTypeInterface' => $vendorDir . '/symfony/type-info/Type/WrappingTypeInterface.php',
'Symfony\\Component\\Uid\\AbstractUid' => $vendorDir . '/symfony/uid/AbstractUid.php',
'Symfony\\Component\\Uid\\BinaryUtil' => $vendorDir . '/symfony/uid/BinaryUtil.php',
'Symfony\\Component\\Uid\\Command\\GenerateUlidCommand' => $vendorDir . '/symfony/uid/Command/GenerateUlidCommand.php',
+2 -3
View File
@@ -19,11 +19,13 @@ return array(
'662a729f963d39afe703c9d9b7ab4a8c' => $vendorDir . '/symfony/polyfill-php83/bootstrap.php',
'35a6ad97d21e794e7e22a17d806652e4' => $vendorDir . '/nunomaduro/termwind/src/Functions.php',
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
'2203a247e6fda86070a5e4e07aed533a' => $vendorDir . '/symfony/clock/Resources/now.php',
'09f6b20656683369174dd6fa83b7e5fb' => $vendorDir . '/symfony/polyfill-uuid/bootstrap.php',
'a1105708a18b76903365ca1c4aa61b02' => $vendorDir . '/symfony/translation/Resources/functions.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php',
'47e1160838b5e5a10346ac4084b58c23' => $vendorDir . '/laravel/prompts/src/helpers.php',
'801c31d8ed748cfa537fa45402288c95' => $vendorDir . '/psy/psysh/src/functions.php',
'e39a8b23c42d4e1452234d762b03835a' => $vendorDir . '/ramsey/uuid/src/functions.php',
'9d2b9fc6db0f153a0a149fefb182415e' => $vendorDir . '/symfony/polyfill-php84/bootstrap.php',
'476ca15b8d69b04665cd879be9cb4c68' => $vendorDir . '/laravel/framework/src/Illuminate/Collections/functions.php',
@@ -35,9 +37,6 @@ return array(
'91892b814db86b8442ad76273bb7aec5' => $vendorDir . '/laravel/framework/src/Illuminate/Reflection/helpers.php',
'493c6aea52f6009bab023b26c21a386a' => $vendorDir . '/laravel/framework/src/Illuminate/Support/functions.php',
'58571171fd5812e6e447dce228f52f4d' => $vendorDir . '/laravel/framework/src/Illuminate/Support/helpers.php',
'6124b4c8570aa390c21fafd04a26c69f' => $vendorDir . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
'801c31d8ed748cfa537fa45402288c95' => $vendorDir . '/psy/psysh/src/functions.php',
'ac0aa5b57142c92aeadc397fa46b9d39' => $vendorDir . '/darkaonline/l5-swagger/src/helpers.php',
'c72349b1fe8d0deeedd3a52e8aa814d8' => $vendorDir . '/mockery/mockery/library/helpers.php',
'ce9671a430e4846b44e1c68c7611f9f5' => $vendorDir . '/mockery/mockery/library/Mockery.php',
'a1cfe24d14977df6878b9bf804af2d1c' => $vendorDir . '/nunomaduro/collision/src/Adapters/Phpunit/Autoload.php',
+3 -4
View File
@@ -27,7 +27,6 @@ return array(
'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'),
'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'),
'Symfony\\Component\\Uid\\' => array($vendorDir . '/symfony/uid'),
'Symfony\\Component\\TypeInfo\\' => array($vendorDir . '/symfony/type-info'),
'Symfony\\Component\\Translation\\' => array($vendorDir . '/symfony/translation'),
'Symfony\\Component\\String\\' => array($vendorDir . '/symfony/string'),
'Symfony\\Component\\Routing\\' => array($vendorDir . '/symfony/routing'),
@@ -42,9 +41,9 @@ return array(
'Symfony\\Component\\CssSelector\\' => array($vendorDir . '/symfony/css-selector'),
'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'),
'Symfony\\Component\\Clock\\' => array($vendorDir . '/symfony/clock'),
'Spatie\\LaravelPackageTools\\' => array($vendorDir . '/spatie/laravel-package-tools/src'),
'Ramsey\\Uuid\\' => array($vendorDir . '/ramsey/uuid/src'),
'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'),
'Radebatz\\TypeInfoExtras\\' => array($vendorDir . '/radebatz/type-info-extras/src'),
'Psy\\' => array($vendorDir . '/psy/psysh/src'),
'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
@@ -56,7 +55,6 @@ return array(
'PhpParser\\' => array($vendorDir . '/nikic/php-parser/lib/PhpParser'),
'PhpOption\\' => array($vendorDir . '/phpoption/phpoption/src/PhpOption'),
'PHPStan\\PhpDocParser\\' => array($vendorDir . '/phpstan/phpdoc-parser/src'),
'OpenApi\\' => array($vendorDir . '/zircote/swagger-php/src'),
'NunoMaduro\\Collision\\' => array($vendorDir . '/nunomaduro/collision/src'),
'Nette\\' => array($vendorDir . '/nette/schema/src', $vendorDir . '/nette/utils/src'),
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
@@ -73,7 +71,6 @@ return array(
'Laravel\\Sail\\' => array($vendorDir . '/laravel/sail/src'),
'Laravel\\Prompts\\' => array($vendorDir . '/laravel/prompts/src'),
'Laravel\\Pail\\' => array($vendorDir . '/laravel/pail/src'),
'L5Swagger\\' => array($vendorDir . '/darkaonline/l5-swagger/src'),
'Illuminate\\Support\\' => array($vendorDir . '/laravel/framework/src/Illuminate/Macroable', $vendorDir . '/laravel/framework/src/Illuminate/Collections', $vendorDir . '/laravel/framework/src/Illuminate/Conditionable', $vendorDir . '/laravel/framework/src/Illuminate/Reflection'),
'Illuminate\\' => array($vendorDir . '/laravel/framework/src/Illuminate'),
'GuzzleHttp\\UriTemplate\\' => array($vendorDir . '/guzzlehttp/uri-template/src'),
@@ -89,6 +86,8 @@ return array(
'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/src'),
'Dflydev\\DotAccessData\\' => array($vendorDir . '/dflydev/dot-access-data/src'),
'DeepCopy\\' => array($vendorDir . '/myclabs/deep-copy/src/DeepCopy'),
'Dedoc\\Scramble\\Database\\Factories\\' => array($vendorDir . '/dedoc/scramble/database/factories'),
'Dedoc\\Scramble\\' => array($vendorDir . '/dedoc/scramble/src'),
'Database\\Seeders\\' => array($baseDir . '/database/seeders', $vendorDir . '/laravel/pint/database/seeders'),
'Database\\Factories\\' => array($baseDir . '/database/factories', $vendorDir . '/laravel/pint/database/factories'),
'Cron\\' => array($vendorDir . '/dragonmantank/cron-expression/src/Cron'),
+485 -219
View File
@@ -20,11 +20,13 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'662a729f963d39afe703c9d9b7ab4a8c' => __DIR__ . '/..' . '/symfony/polyfill-php83/bootstrap.php',
'35a6ad97d21e794e7e22a17d806652e4' => __DIR__ . '/..' . '/nunomaduro/termwind/src/Functions.php',
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
'2203a247e6fda86070a5e4e07aed533a' => __DIR__ . '/..' . '/symfony/clock/Resources/now.php',
'09f6b20656683369174dd6fa83b7e5fb' => __DIR__ . '/..' . '/symfony/polyfill-uuid/bootstrap.php',
'a1105708a18b76903365ca1c4aa61b02' => __DIR__ . '/..' . '/symfony/translation/Resources/functions.php',
'37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php',
'47e1160838b5e5a10346ac4084b58c23' => __DIR__ . '/..' . '/laravel/prompts/src/helpers.php',
'801c31d8ed748cfa537fa45402288c95' => __DIR__ . '/..' . '/psy/psysh/src/functions.php',
'e39a8b23c42d4e1452234d762b03835a' => __DIR__ . '/..' . '/ramsey/uuid/src/functions.php',
'9d2b9fc6db0f153a0a149fefb182415e' => __DIR__ . '/..' . '/symfony/polyfill-php84/bootstrap.php',
'476ca15b8d69b04665cd879be9cb4c68' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Collections/functions.php',
@@ -36,9 +38,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'91892b814db86b8442ad76273bb7aec5' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Reflection/helpers.php',
'493c6aea52f6009bab023b26c21a386a' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/functions.php',
'58571171fd5812e6e447dce228f52f4d' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Support/helpers.php',
'6124b4c8570aa390c21fafd04a26c69f' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/deep_copy.php',
'801c31d8ed748cfa537fa45402288c95' => __DIR__ . '/..' . '/psy/psysh/src/functions.php',
'ac0aa5b57142c92aeadc397fa46b9d39' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/helpers.php',
'c72349b1fe8d0deeedd3a52e8aa814d8' => __DIR__ . '/..' . '/mockery/mockery/library/helpers.php',
'ce9671a430e4846b44e1c68c7611f9f5' => __DIR__ . '/..' . '/mockery/mockery/library/Mockery.php',
'a1cfe24d14977df6878b9bf804af2d1c' => __DIR__ . '/..' . '/nunomaduro/collision/src/Adapters/Phpunit/Autoload.php',
@@ -78,7 +77,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'Symfony\\Component\\Yaml\\' => 23,
'Symfony\\Component\\VarDumper\\' => 28,
'Symfony\\Component\\Uid\\' => 22,
'Symfony\\Component\\TypeInfo\\' => 27,
'Symfony\\Component\\Translation\\' => 30,
'Symfony\\Component\\String\\' => 25,
'Symfony\\Component\\Routing\\' => 26,
@@ -93,12 +91,12 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'Symfony\\Component\\CssSelector\\' => 30,
'Symfony\\Component\\Console\\' => 26,
'Symfony\\Component\\Clock\\' => 24,
'Spatie\\LaravelPackageTools\\' => 27,
),
'R' =>
array (
'Ramsey\\Uuid\\' => 12,
'Ramsey\\Collection\\' => 18,
'Radebatz\\TypeInfoExtras\\' => 24,
),
'P' =>
array (
@@ -114,10 +112,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'PhpOption\\' => 10,
'PHPStan\\PhpDocParser\\' => 21,
),
'O' =>
array (
'OpenApi\\' => 8,
),
'N' =>
array (
'NunoMaduro\\Collision\\' => 21,
@@ -142,7 +136,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'Laravel\\Sail\\' => 13,
'Laravel\\Prompts\\' => 16,
'Laravel\\Pail\\' => 13,
'L5Swagger\\' => 10,
),
'I' =>
array (
@@ -173,6 +166,8 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'Doctrine\\Common\\Lexer\\' => 22,
'Dflydev\\DotAccessData\\' => 22,
'DeepCopy\\' => 9,
'Dedoc\\Scramble\\Database\\Factories\\' => 34,
'Dedoc\\Scramble\\' => 15,
'Database\\Seeders\\' => 17,
'Database\\Factories\\' => 19,
),
@@ -277,10 +272,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
array (
0 => __DIR__ . '/..' . '/symfony/uid',
),
'Symfony\\Component\\TypeInfo\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/type-info',
),
'Symfony\\Component\\Translation\\' =>
array (
0 => __DIR__ . '/..' . '/symfony/translation',
@@ -337,6 +328,10 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
array (
0 => __DIR__ . '/..' . '/symfony/clock',
),
'Spatie\\LaravelPackageTools\\' =>
array (
0 => __DIR__ . '/..' . '/spatie/laravel-package-tools/src',
),
'Ramsey\\Uuid\\' =>
array (
0 => __DIR__ . '/..' . '/ramsey/uuid/src',
@@ -345,10 +340,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
array (
0 => __DIR__ . '/..' . '/ramsey/collection/src',
),
'Radebatz\\TypeInfoExtras\\' =>
array (
0 => __DIR__ . '/..' . '/radebatz/type-info-extras/src',
),
'Psy\\' =>
array (
0 => __DIR__ . '/..' . '/psy/psysh/src',
@@ -394,10 +385,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
array (
0 => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src',
),
'OpenApi\\' =>
array (
0 => __DIR__ . '/..' . '/zircote/swagger-php/src',
),
'NunoMaduro\\Collision\\' =>
array (
0 => __DIR__ . '/..' . '/nunomaduro/collision/src',
@@ -464,10 +451,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
array (
0 => __DIR__ . '/..' . '/laravel/pail/src',
),
'L5Swagger\\' =>
array (
0 => __DIR__ . '/..' . '/darkaonline/l5-swagger/src',
),
'Illuminate\\Support\\' =>
array (
0 => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/Macroable',
@@ -531,6 +514,14 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
array (
0 => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy',
),
'Dedoc\\Scramble\\Database\\Factories\\' =>
array (
0 => __DIR__ . '/..' . '/dedoc/scramble/database/factories',
),
'Dedoc\\Scramble\\' =>
array (
0 => __DIR__ . '/..' . '/dedoc/scramble/src',
),
'Database\\Seeders\\' =>
array (
0 => __DIR__ . '/../..' . '/database/seeders',
@@ -566,10 +557,25 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
public static $classMap = array (
'App\\Docs\\OpenApiSpec' => __DIR__ . '/../..' . '/app/Docs/OpenApiSpec.php',
'App\\Http\\Controllers\\ApiController' => __DIR__ . '/../..' . '/app/Http/Controllers/ApiController.php',
'App\\Http\\Controllers\\AuthController' => __DIR__ . '/../..' . '/app/Http/Controllers/AuthController.php',
'App\\Http\\Controllers\\Controller' => __DIR__ . '/../..' . '/app/Http/Controllers/Controller.php',
'App\\Http\\Controllers\\TicketController' => __DIR__ . '/../..' . '/app/Http/Controllers/TicketController.php',
'App\\Http\\Controllers\\Ticket\\TicketController' => __DIR__ . '/../..' . '/app/Http/Controllers/Ticket/TicketController.php',
'App\\Http\\Requests\\Ticket\\StoreTicketRequest' => __DIR__ . '/../..' . '/app/Http/Requests/Ticket/StoreTicketRequest.php',
'App\\Http\\Requests\\Ticket\\UpdateTicketRequest' => __DIR__ . '/../..' . '/app/Http/Requests/Ticket/UpdateTicketRequest.php',
'App\\Http\\Resources\\TicketResource' => __DIR__ . '/../..' . '/app/Http/Resources/TicketResource.php',
'App\\Models\\Ticket' => __DIR__ . '/../..' . '/app/Models/Ticket.php',
'App\\Models\\TicketApproval' => __DIR__ . '/../..' . '/app/Models/TicketApproval.php',
'App\\Models\\TicketAssignment' => __DIR__ . '/../..' . '/app/Models/TicketAssignment.php',
'App\\Models\\TicketFile' => __DIR__ . '/../..' . '/app/Models/TicketFile.php',
'App\\Models\\TicketLog' => __DIR__ . '/../..' . '/app/Models/TicketLog.php',
'App\\Models\\TicketMaterial' => __DIR__ . '/../..' . '/app/Models/TicketMaterial.php',
'App\\Models\\TicketType' => __DIR__ . '/../..' . '/app/Models/TicketType.php',
'App\\Models\\User' => __DIR__ . '/../..' . '/app/Models/User.php',
'App\\Providers\\AppServiceProvider' => __DIR__ . '/../..' . '/app/Providers/AppServiceProvider.php',
'App\\Services\\Ticket\\TicketService' => __DIR__ . '/../..' . '/app/Services/Ticket/TicketService.php',
'App\\Traits\\ApiResponse' => __DIR__ . '/../..' . '/app/Traits/ApiResponse.php',
'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
'Brick\\Math\\BigDecimal' => __DIR__ . '/..' . '/brick/math/src/BigDecimal.php',
'Brick\\Math\\BigInteger' => __DIR__ . '/..' . '/brick/math/src/BigInteger.php',
@@ -704,6 +710,425 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'DateMalformedStringException' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateMalformedStringException.php',
'DateObjectError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateObjectError.php',
'DateRangeError' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/DateRangeError.php',
'Dedoc\\Scramble\\AbstractOpenApiVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/AbstractOpenApiVisitor.php',
'Dedoc\\Scramble\\Attributes\\BodyParameter' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/BodyParameter.php',
'Dedoc\\Scramble\\Attributes\\CookieParameter' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/CookieParameter.php',
'Dedoc\\Scramble\\Attributes\\Endpoint' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/Endpoint.php',
'Dedoc\\Scramble\\Attributes\\Example' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/Example.php',
'Dedoc\\Scramble\\Attributes\\ExcludeAllRoutesFromDocs' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/ExcludeAllRoutesFromDocs.php',
'Dedoc\\Scramble\\Attributes\\ExcludeRouteFromDocs' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/ExcludeRouteFromDocs.php',
'Dedoc\\Scramble\\Attributes\\Group' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/Group.php',
'Dedoc\\Scramble\\Attributes\\Header' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/Header.php',
'Dedoc\\Scramble\\Attributes\\HeaderParameter' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/HeaderParameter.php',
'Dedoc\\Scramble\\Attributes\\Hidden' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/Hidden.php',
'Dedoc\\Scramble\\Attributes\\IgnoreParam' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/IgnoreParam.php',
'Dedoc\\Scramble\\Attributes\\MissingValue' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/MissingValue.php',
'Dedoc\\Scramble\\Attributes\\Parameter' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/Parameter.php',
'Dedoc\\Scramble\\Attributes\\PathParameter' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/PathParameter.php',
'Dedoc\\Scramble\\Attributes\\QueryParameter' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/QueryParameter.php',
'Dedoc\\Scramble\\Attributes\\Response' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/Response.php',
'Dedoc\\Scramble\\Attributes\\SchemaName' => __DIR__ . '/..' . '/dedoc/scramble/src/Attributes/SchemaName.php',
'Dedoc\\Scramble\\CacheableGenerator' => __DIR__ . '/..' . '/dedoc/scramble/src/CacheableGenerator.php',
'Dedoc\\Scramble\\Configuration\\ApiPath' => __DIR__ . '/..' . '/dedoc/scramble/src/Configuration/ApiPath.php',
'Dedoc\\Scramble\\Configuration\\DocumentTransformers' => __DIR__ . '/..' . '/dedoc/scramble/src/Configuration/DocumentTransformers.php',
'Dedoc\\Scramble\\Configuration\\GeneratorConfigCollection' => __DIR__ . '/..' . '/dedoc/scramble/src/Configuration/GeneratorConfigCollection.php',
'Dedoc\\Scramble\\Configuration\\InferConfig' => __DIR__ . '/..' . '/dedoc/scramble/src/Configuration/InferConfig.php',
'Dedoc\\Scramble\\Configuration\\JsonApiConfig' => __DIR__ . '/..' . '/dedoc/scramble/src/Configuration/JsonApiConfig.php',
'Dedoc\\Scramble\\Configuration\\OperationTransformers' => __DIR__ . '/..' . '/dedoc/scramble/src/Configuration/OperationTransformers.php',
'Dedoc\\Scramble\\Configuration\\ParametersExtractors' => __DIR__ . '/..' . '/dedoc/scramble/src/Configuration/ParametersExtractors.php',
'Dedoc\\Scramble\\Configuration\\RendererConfig' => __DIR__ . '/..' . '/dedoc/scramble/src/Configuration/RendererConfig.php',
'Dedoc\\Scramble\\Configuration\\RuleTransformers' => __DIR__ . '/..' . '/dedoc/scramble/src/Configuration/RuleTransformers.php',
'Dedoc\\Scramble\\Configuration\\SecurityDocumentationContext' => __DIR__ . '/..' . '/dedoc/scramble/src/Configuration/SecurityDocumentationContext.php',
'Dedoc\\Scramble\\Configuration\\ServerVariables' => __DIR__ . '/..' . '/dedoc/scramble/src/Configuration/ServerVariables.php',
'Dedoc\\Scramble\\Console\\Commands\\AnalyzeDocumentation' => __DIR__ . '/..' . '/dedoc/scramble/src/Console/Commands/AnalyzeDocumentation.php',
'Dedoc\\Scramble\\Console\\Commands\\CacheDocumentation' => __DIR__ . '/..' . '/dedoc/scramble/src/Console/Commands/CacheDocumentation.php',
'Dedoc\\Scramble\\Console\\Commands\\ClearDocumentationCache' => __DIR__ . '/..' . '/dedoc/scramble/src/Console/Commands/ClearDocumentationCache.php',
'Dedoc\\Scramble\\Console\\Commands\\Components\\Code' => __DIR__ . '/..' . '/dedoc/scramble/src/Console/Commands/Components/Code.php',
'Dedoc\\Scramble\\Console\\Commands\\Components\\Component' => __DIR__ . '/..' . '/dedoc/scramble/src/Console/Commands/Components/Component.php',
'Dedoc\\Scramble\\Console\\Commands\\Components\\TermsOfContentItem' => __DIR__ . '/..' . '/dedoc/scramble/src/Console/Commands/Components/TermsOfContentItem.php',
'Dedoc\\Scramble\\Console\\Commands\\Concerns\\ManagesDocumentationCache' => __DIR__ . '/..' . '/dedoc/scramble/src/Console/Commands/Concerns/ManagesDocumentationCache.php',
'Dedoc\\Scramble\\Console\\Commands\\ExportDocumentation' => __DIR__ . '/..' . '/dedoc/scramble/src/Console/Commands/ExportDocumentation.php',
'Dedoc\\Scramble\\ContextReferences' => __DIR__ . '/..' . '/dedoc/scramble/src/ContextReferences.php',
'Dedoc\\Scramble\\ContextReferencesCollection' => __DIR__ . '/..' . '/dedoc/scramble/src/ContextReferencesCollection.php',
'Dedoc\\Scramble\\Contracts\\AllRulesSchemasTransformer' => __DIR__ . '/..' . '/dedoc/scramble/src/Contracts/AllRulesSchemasTransformer.php',
'Dedoc\\Scramble\\Contracts\\DocumentTransformer' => __DIR__ . '/..' . '/dedoc/scramble/src/Contracts/DocumentTransformer.php',
'Dedoc\\Scramble\\Contracts\\OperationTransformer' => __DIR__ . '/..' . '/dedoc/scramble/src/Contracts/OperationTransformer.php',
'Dedoc\\Scramble\\Contracts\\RuleTransformer' => __DIR__ . '/..' . '/dedoc/scramble/src/Contracts/RuleTransformer.php',
'Dedoc\\Scramble\\Contracts\\SecurityDocumentationStrategy' => __DIR__ . '/..' . '/dedoc/scramble/src/Contracts/SecurityDocumentationStrategy.php',
'Dedoc\\Scramble\\DocumentTransformers\\AddDocumentTags' => __DIR__ . '/..' . '/dedoc/scramble/src/DocumentTransformers/AddDocumentTags.php',
'Dedoc\\Scramble\\DocumentTransformers\\CleanupUnusedResponseReferencesTransformer' => __DIR__ . '/..' . '/dedoc/scramble/src/DocumentTransformers/CleanupUnusedResponseReferencesTransformer.php',
'Dedoc\\Scramble\\Enums\\JsonApiArraySerialization' => __DIR__ . '/..' . '/dedoc/scramble/src/Enums/JsonApiArraySerialization.php',
'Dedoc\\Scramble\\Exceptions\\ConsoleRenderable' => __DIR__ . '/..' . '/dedoc/scramble/src/Exceptions/ConsoleRenderable.php',
'Dedoc\\Scramble\\Exceptions\\InvalidSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Exceptions/InvalidSchema.php',
'Dedoc\\Scramble\\Exceptions\\OpenApiReferenceTargetNotFoundException' => __DIR__ . '/..' . '/dedoc/scramble/src/Exceptions/OpenApiReferenceTargetNotFoundException.php',
'Dedoc\\Scramble\\Exceptions\\RouteAware' => __DIR__ . '/..' . '/dedoc/scramble/src/Exceptions/RouteAware.php',
'Dedoc\\Scramble\\Exceptions\\RouteAwareTrait' => __DIR__ . '/..' . '/dedoc/scramble/src/Exceptions/RouteAwareTrait.php',
'Dedoc\\Scramble\\Exceptions\\RulesEvaluationException' => __DIR__ . '/..' . '/dedoc/scramble/src/Exceptions/RulesEvaluationException.php',
'Dedoc\\Scramble\\Extensions\\ExceptionToResponseExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Extensions/ExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Extensions\\OperationExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Extensions/OperationExtension.php',
'Dedoc\\Scramble\\Extensions\\TypeToSchemaExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Extensions/TypeToSchemaExtension.php',
'Dedoc\\Scramble\\Generator' => __DIR__ . '/..' . '/dedoc/scramble/src/Generator.php',
'Dedoc\\Scramble\\GeneratorConfig' => __DIR__ . '/..' . '/dedoc/scramble/src/GeneratorConfig.php',
'Dedoc\\Scramble\\Http\\Middleware\\RestrictedDocsAccess' => __DIR__ . '/..' . '/dedoc/scramble/src/Http/Middleware/RestrictedDocsAccess.php',
'Dedoc\\Scramble\\Infer' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer.php',
'Dedoc\\Scramble\\Infer\\Analyzer\\ClassAnalyzer' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Analyzer/ClassAnalyzer.php',
'Dedoc\\Scramble\\Infer\\Analyzer\\MethodAnalyzer' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Analyzer/MethodAnalyzer.php',
'Dedoc\\Scramble\\Infer\\Analyzer\\PropertyAnalyzer' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Analyzer/PropertyAnalyzer.php',
'Dedoc\\Scramble\\Infer\\AutoResolvingArgumentTypeBag' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/AutoResolvingArgumentTypeBag.php',
'Dedoc\\Scramble\\Infer\\Configuration\\ClassLike' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Configuration/ClassLike.php',
'Dedoc\\Scramble\\Infer\\Configuration\\ClassLikeAndChildren' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Configuration/ClassLikeAndChildren.php',
'Dedoc\\Scramble\\Infer\\Configuration\\DefinitionMatcher' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Configuration/DefinitionMatcher.php',
'Dedoc\\Scramble\\Infer\\Context' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Context.php',
'Dedoc\\Scramble\\Infer\\Contracts\\ArgumentTypeBag' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Contracts/ArgumentTypeBag.php',
'Dedoc\\Scramble\\Infer\\Contracts\\ClassDefinition' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Contracts/ClassDefinition.php',
'Dedoc\\Scramble\\Infer\\Contracts\\ClassDefinitionBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Contracts/ClassDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\Contracts\\FunctionLikeDefinitionBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Contracts/FunctionLikeDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\Contracts\\Index' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Contracts/Index.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\FunctionLikeAstDefinitionBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/DefinitionBuilders/FunctionLikeAstDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\FunctionLikeDeclarationAstDefinitionBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/DefinitionBuilders/FunctionLikeDeclarationAstDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\FunctionLikeDeclarationPhpDocDefinitionBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/DefinitionBuilders/FunctionLikeDeclarationPhpDocDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\FunctionLikeReflectionDefinitionBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/DefinitionBuilders/FunctionLikeReflectionDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\LazyClassReflectionDefinitionBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/DefinitionBuilders/LazyClassReflectionDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\SelfOutTypeBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/DefinitionBuilders/SelfOutTypeBuilder.php',
'Dedoc\\Scramble\\Infer\\DefinitionBuilders\\ShallowClassReflectionDefinitionBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/DefinitionBuilders/ShallowClassReflectionDefinitionBuilder.php',
'Dedoc\\Scramble\\Infer\\Definition\\AttributeDefinition' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Definition/AttributeDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\ClassDefinition' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Definition/ClassDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\ClassPropertyDefinition' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Definition/ClassPropertyDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\FunctionLikeAstDefinition' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Definition/FunctionLikeAstDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\FunctionLikeDefinition' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Definition/FunctionLikeDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\LazyShallowClassDefinition' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Definition/LazyShallowClassDefinition.php',
'Dedoc\\Scramble\\Infer\\Definition\\PendingDocComment' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Definition/PendingDocComment.php',
'Dedoc\\Scramble\\Infer\\Definition\\PropertyVisibility' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Definition/PropertyVisibility.php',
'Dedoc\\Scramble\\Infer\\Definition\\ShallowClassDefinition' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Definition/ShallowClassDefinition.php',
'Dedoc\\Scramble\\Infer\\Extensions\\AfterClassDefinitionCreatedExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/AfterClassDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\AfterSideEffectCallAnalyzed' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/AfterSideEffectCallAnalyzed.php',
'Dedoc\\Scramble\\Infer\\Extensions\\AnyMethodReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/AnyMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\AnyMethodCallEvent' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/Event/AnyMethodCallEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\ClassDefinitionCreatedEvent' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/Event/ClassDefinitionCreatedEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\Concerns\\ArgumentTypesAware' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/Event/Concerns/ArgumentTypesAware.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\FunctionCallEvent' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/Event/FunctionCallEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\MethodCallEvent' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/Event/MethodCallEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\PropertyFetchEvent' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/Event/PropertyFetchEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\ReferenceResolutionEvent' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/Event/ReferenceResolutionEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\SideEffectCallEvent' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/Event/SideEffectCallEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\Event\\StaticMethodCallEvent' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/Event/StaticMethodCallEvent.php',
'Dedoc\\Scramble\\Infer\\Extensions\\ExpressionExceptionExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/ExpressionExceptionExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\ExpressionTypeInferExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/ExpressionTypeInferExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\ExtensionsBroker' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/ExtensionsBroker.php',
'Dedoc\\Scramble\\Infer\\Extensions\\FunctionReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/FunctionReturnTypeExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\IndexBuildingBroker' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/IndexBuildingBroker.php',
'Dedoc\\Scramble\\Infer\\Extensions\\InferExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/InferExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\MethodCallExceptionsExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/MethodCallExceptionsExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\MethodReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/MethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\PropertyTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/PropertyTypeExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\ResolvingType' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/ResolvingType.php',
'Dedoc\\Scramble\\Infer\\Extensions\\StaticMethodReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/StaticMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Infer\\Extensions\\TypeResolverExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Extensions/TypeResolverExtension.php',
'Dedoc\\Scramble\\Infer\\FlowBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/FlowBuilder.php',
'Dedoc\\Scramble\\Infer\\Flow\\AbstractNode' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Flow/AbstractNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\ConditionNode' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Flow/ConditionNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\Edge' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Flow/Edge.php',
'Dedoc\\Scramble\\Infer\\Flow\\ExpressionTypeInferrer' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Flow/ExpressionTypeInferrer.php',
'Dedoc\\Scramble\\Infer\\Flow\\MergeNode' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Flow/MergeNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\Node' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Flow/Node.php',
'Dedoc\\Scramble\\Infer\\Flow\\Nodes' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Flow/Nodes.php',
'Dedoc\\Scramble\\Infer\\Flow\\StartNode' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Flow/StartNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\StatementNode' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Flow/StatementNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\TerminateNode' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Flow/TerminateNode.php',
'Dedoc\\Scramble\\Infer\\Flow\\TerminationKind' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Flow/TerminationKind.php',
'Dedoc\\Scramble\\Infer\\Handler\\ArrayHandler' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/ArrayHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\ArrayItemHandler' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/ArrayItemHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\AssignHandler' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/AssignHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\ClassHandler' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/ClassHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\CreatesScope' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/CreatesScope.php',
'Dedoc\\Scramble\\Infer\\Handler\\ExceptionInferringExtensions' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/ExceptionInferringExtensions.php',
'Dedoc\\Scramble\\Infer\\Handler\\ExpressionTypeInferringExtensions' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/ExpressionTypeInferringExtensions.php',
'Dedoc\\Scramble\\Infer\\Handler\\FunctionLikeHandler' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/FunctionLikeHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\IndexBuildingHandler' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/IndexBuildingHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\PhpDocHandler' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/PhpDocHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\PropertyHandler' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/PropertyHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\ReturnHandler' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/ReturnHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\ThrowHandler' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/ThrowHandler.php',
'Dedoc\\Scramble\\Infer\\Handler\\UnsetHandler' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Handler/UnsetHandler.php',
'Dedoc\\Scramble\\Infer\\Reflector\\ClassReflector' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Reflector/ClassReflector.php',
'Dedoc\\Scramble\\Infer\\Reflector\\ClosureReflector' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Reflector/ClosureReflector.php',
'Dedoc\\Scramble\\Infer\\Reflector\\MethodReflector' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Reflector/MethodReflector.php',
'Dedoc\\Scramble\\Infer\\Reflector\\PropertyReflector' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Reflector/PropertyReflector.php',
'Dedoc\\Scramble\\Infer\\Scope\\GlobalScope' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Scope/GlobalScope.php',
'Dedoc\\Scramble\\Infer\\Scope\\Index' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Scope/Index.php',
'Dedoc\\Scramble\\Infer\\Scope\\LazyShallowReflectionIndex' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Scope/LazyShallowReflectionIndex.php',
'Dedoc\\Scramble\\Infer\\Scope\\NodeTypesResolver' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Scope/NodeTypesResolver.php',
'Dedoc\\Scramble\\Infer\\Scope\\Scope' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Scope/Scope.php',
'Dedoc\\Scramble\\Infer\\Scope\\ScopeContext' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Scope/ScopeContext.php',
'Dedoc\\Scramble\\Infer\\Services\\ConstFetchTypeGetter' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/ConstFetchTypeGetter.php',
'Dedoc\\Scramble\\Infer\\Services\\FileNameResolver' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/FileNameResolver.php',
'Dedoc\\Scramble\\Infer\\Services\\FileParser' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/FileParser.php',
'Dedoc\\Scramble\\Infer\\Services\\FileParserResult' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/FileParserResult.php',
'Dedoc\\Scramble\\Infer\\Services\\KeyedArrayUnpackingTypeVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/KeyedArrayUnpackingTypeVisitor.php',
'Dedoc\\Scramble\\Infer\\Services\\LateTypeResolvingTypeVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/LateTypeResolvingTypeVisitor.php',
'Dedoc\\Scramble\\Infer\\Services\\RecursionGuard' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/RecursionGuard.php',
'Dedoc\\Scramble\\Infer\\Services\\ReferenceTypeResolver' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/ReferenceTypeResolver.php',
'Dedoc\\Scramble\\Infer\\Services\\ShallowTypeResolver' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/ShallowTypeResolver.php',
'Dedoc\\Scramble\\Infer\\Services\\TemplateTypesSolver' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/TemplateTypesSolver.php',
'Dedoc\\Scramble\\Infer\\Services\\TemplatesMap' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/TemplatesMap.php',
'Dedoc\\Scramble\\Infer\\Services\\UnionNormalizingTypeVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Services/UnionNormalizingTypeVisitor.php',
'Dedoc\\Scramble\\Infer\\SimpleTypeGetters\\BooleanNotTypeGetter' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/SimpleTypeGetters/BooleanNotTypeGetter.php',
'Dedoc\\Scramble\\Infer\\SimpleTypeGetters\\CastTypeGetter' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/SimpleTypeGetters/CastTypeGetter.php',
'Dedoc\\Scramble\\Infer\\SimpleTypeGetters\\ClassConstFetchTypeGetter' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/SimpleTypeGetters/ClassConstFetchTypeGetter.php',
'Dedoc\\Scramble\\Infer\\SimpleTypeGetters\\ConstFetchTypeGetter' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/SimpleTypeGetters/ConstFetchTypeGetter.php',
'Dedoc\\Scramble\\Infer\\SimpleTypeGetters\\ScalarTypeGetter' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/SimpleTypeGetters/ScalarTypeGetter.php',
'Dedoc\\Scramble\\Infer\\TypeInferer' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/TypeInferer.php',
'Dedoc\\Scramble\\Infer\\UnresolvableArgumentTypeBag' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/UnresolvableArgumentTypeBag.php',
'Dedoc\\Scramble\\Infer\\Visitors\\PhpDocResolver' => __DIR__ . '/..' . '/dedoc/scramble/src/Infer/Visitors/PhpDocResolver.php',
'Dedoc\\Scramble\\OpenApiContext' => __DIR__ . '/..' . '/dedoc/scramble/src/OpenApiContext.php',
'Dedoc\\Scramble\\OpenApiTraverser' => __DIR__ . '/..' . '/dedoc/scramble/src/OpenApiTraverser.php',
'Dedoc\\Scramble\\OpenApiVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/OpenApiVisitor.php',
'Dedoc\\Scramble\\OpenApiVisitor\\SchemaEnforceVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/OpenApiVisitor/SchemaEnforceVisitor.php',
'Dedoc\\Scramble\\PhpDoc\\AbstractPhpDocTypeVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/PhpDoc/AbstractPhpDocTypeVisitor.php',
'Dedoc\\Scramble\\PhpDoc\\PhpDocParser' => __DIR__ . '/..' . '/dedoc/scramble/src/PhpDoc/PhpDocParser.php',
'Dedoc\\Scramble\\PhpDoc\\PhpDocTypeHelper' => __DIR__ . '/..' . '/dedoc/scramble/src/PhpDoc/PhpDocTypeHelper.php',
'Dedoc\\Scramble\\PhpDoc\\PhpDocTypeVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/PhpDoc/PhpDocTypeVisitor.php',
'Dedoc\\Scramble\\PhpDoc\\PhpDocTypeWalker' => __DIR__ . '/..' . '/dedoc/scramble/src/PhpDoc/PhpDocTypeWalker.php',
'Dedoc\\Scramble\\PhpDoc\\ResolveFqnPhpDocTypeVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/PhpDoc/ResolveFqnPhpDocTypeVisitor.php',
'Dedoc\\Scramble\\Reflection\\JsonApiRelationship' => __DIR__ . '/..' . '/dedoc/scramble/src/Reflection/JsonApiRelationship.php',
'Dedoc\\Scramble\\Reflection\\ReflectionJsonApiResource' => __DIR__ . '/..' . '/dedoc/scramble/src/Reflection/ReflectionJsonApiResource.php',
'Dedoc\\Scramble\\Reflection\\ReflectionModel' => __DIR__ . '/..' . '/dedoc/scramble/src/Reflection/ReflectionModel.php',
'Dedoc\\Scramble\\Reflection\\ReflectionRoute' => __DIR__ . '/..' . '/dedoc/scramble/src/Reflection/ReflectionRoute.php',
'Dedoc\\Scramble\\RuleTransformers\\ConfirmedRule' => __DIR__ . '/..' . '/dedoc/scramble/src/RuleTransformers/ConfirmedRule.php',
'Dedoc\\Scramble\\RuleTransformers\\EnumRule' => __DIR__ . '/..' . '/dedoc/scramble/src/RuleTransformers/EnumRule.php',
'Dedoc\\Scramble\\RuleTransformers\\ExistsRule' => __DIR__ . '/..' . '/dedoc/scramble/src/RuleTransformers/ExistsRule.php',
'Dedoc\\Scramble\\RuleTransformers\\InRule' => __DIR__ . '/..' . '/dedoc/scramble/src/RuleTransformers/InRule.php',
'Dedoc\\Scramble\\RuleTransformers\\RegexRule' => __DIR__ . '/..' . '/dedoc/scramble/src/RuleTransformers/RegexRule.php',
'Dedoc\\Scramble\\SchemaValidator' => __DIR__ . '/..' . '/dedoc/scramble/src/SchemaValidator.php',
'Dedoc\\Scramble\\Scramble' => __DIR__ . '/..' . '/dedoc/scramble/src/Scramble.php',
'Dedoc\\Scramble\\ScrambleServiceProvider' => __DIR__ . '/..' . '/dedoc/scramble/src/ScrambleServiceProvider.php',
'Dedoc\\Scramble\\SecurityDocumentation\\MiddlewareAuthSecurityStrategy' => __DIR__ . '/..' . '/dedoc/scramble/src/SecurityDocumentation/MiddlewareAuthSecurityStrategy.php',
'Dedoc\\Scramble\\Support\\ContainerUtils' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/ContainerUtils.php',
'Dedoc\\Scramble\\Support\\ExceptionToResponseExtensions\\AuthenticationExceptionToResponseExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/ExceptionToResponseExtensions/AuthenticationExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Support\\ExceptionToResponseExtensions\\AuthorizationExceptionToResponseExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/ExceptionToResponseExtensions/AuthorizationExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Support\\ExceptionToResponseExtensions\\HttpExceptionToResponseExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/ExceptionToResponseExtensions/HttpExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Support\\ExceptionToResponseExtensions\\NotFoundExceptionToResponseExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/ExceptionToResponseExtensions/NotFoundExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Support\\ExceptionToResponseExtensions\\ValidationExceptionToResponseExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/ExceptionToResponseExtensions/ValidationExceptionToResponseExtension.php',
'Dedoc\\Scramble\\Support\\Factories\\JsonApiQueryParameterFactory' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Factories/JsonApiQueryParameterFactory.php',
'Dedoc\\Scramble\\Support\\Generator\\ClassBasedReference' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/ClassBasedReference.php',
'Dedoc\\Scramble\\Support\\Generator\\Combined\\AllOf' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Combined/AllOf.php',
'Dedoc\\Scramble\\Support\\Generator\\Combined\\AnyOf' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Combined/AnyOf.php',
'Dedoc\\Scramble\\Support\\Generator\\Components' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Components.php',
'Dedoc\\Scramble\\Support\\Generator\\Encoding' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Encoding.php',
'Dedoc\\Scramble\\Support\\Generator\\Example' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Example.php',
'Dedoc\\Scramble\\Support\\Generator\\Header' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Header.php',
'Dedoc\\Scramble\\Support\\Generator\\InfoObject' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/InfoObject.php',
'Dedoc\\Scramble\\Support\\Generator\\Link' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Link.php',
'Dedoc\\Scramble\\Support\\Generator\\MediaType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/MediaType.php',
'Dedoc\\Scramble\\Support\\Generator\\MissingExample' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/MissingExample.php',
'Dedoc\\Scramble\\Support\\Generator\\MissingValue' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/MissingValue.php',
'Dedoc\\Scramble\\Support\\Generator\\OpenApi' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/OpenApi.php',
'Dedoc\\Scramble\\Support\\Generator\\Operation' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Operation.php',
'Dedoc\\Scramble\\Support\\Generator\\Parameter' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Parameter.php',
'Dedoc\\Scramble\\Support\\Generator\\Path' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Path.php',
'Dedoc\\Scramble\\Support\\Generator\\Reference' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Reference.php',
'Dedoc\\Scramble\\Support\\Generator\\RequestBodyObject' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/RequestBodyObject.php',
'Dedoc\\Scramble\\Support\\Generator\\Response' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Response.php',
'Dedoc\\Scramble\\Support\\Generator\\Schema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Schema.php',
'Dedoc\\Scramble\\Support\\Generator\\SecurityRequirement' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/SecurityRequirement.php',
'Dedoc\\Scramble\\Support\\Generator\\SecurityScheme' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/SecurityScheme.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\ApiKeySecurityScheme' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/ApiKeySecurityScheme.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\HttpSecurityScheme' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/HttpSecurityScheme.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\OAuthFlow' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/OAuthFlow.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\OAuthFlows' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/OAuthFlows.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\Oauth2SecurityScheme' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/Oauth2SecurityScheme.php',
'Dedoc\\Scramble\\Support\\Generator\\SecuritySchemes\\OpenIdConnectUrlSecurityScheme' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/SecuritySchemes/OpenIdConnectUrlSecurityScheme.php',
'Dedoc\\Scramble\\Support\\Generator\\Server' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Server.php',
'Dedoc\\Scramble\\Support\\Generator\\ServerVariable' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/ServerVariable.php',
'Dedoc\\Scramble\\Support\\Generator\\Tag' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Tag.php',
'Dedoc\\Scramble\\Support\\Generator\\TypeTransformer' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/TypeTransformer.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\ArrayType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Types/ArrayType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\BooleanType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Types/BooleanType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\IntegerType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Types/IntegerType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\MixedType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Types/MixedType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\NullType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Types/NullType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\NumberType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Types/NumberType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\ObjectType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Types/ObjectType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\StringType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Types/StringType.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\Type' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Types/Type.php',
'Dedoc\\Scramble\\Support\\Generator\\Types\\UnknownType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/Types/UnknownType.php',
'Dedoc\\Scramble\\Support\\Generator\\UniqueNameOptions' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/UniqueNameOptions.php',
'Dedoc\\Scramble\\Support\\Generator\\UniqueNamesOptionsCollection' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/UniqueNamesOptionsCollection.php',
'Dedoc\\Scramble\\Support\\Generator\\WithAttributes' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/WithAttributes.php',
'Dedoc\\Scramble\\Support\\Generator\\WithExtensions' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Generator/WithExtensions.php',
'Dedoc\\Scramble\\Support\\Helpers\\ExamplesExtractor' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Helpers/ExamplesExtractor.php',
'Dedoc\\Scramble\\Support\\Helpers\\JsonResourceHelper' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Helpers/JsonResourceHelper.php',
'Dedoc\\Scramble\\Support\\IndexBuilders\\Bag' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/IndexBuilders/Bag.php',
'Dedoc\\Scramble\\Support\\IndexBuilders\\IndexBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/IndexBuilders/IndexBuilder.php',
'Dedoc\\Scramble\\Support\\IndexBuilders\\PaginatorsCandidatesBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/IndexBuilders/PaginatorsCandidatesBuilder.php',
'Dedoc\\Scramble\\Support\\IndexBuilders\\RequestParametersBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/IndexBuilders/RequestParametersBuilder.php',
'Dedoc\\Scramble\\Support\\IndexBuilders\\ScopeCollector' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/IndexBuilders/ScopeCollector.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AbortHelpersExceptionInfer' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/AbortHelpersExceptionInfer.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterAnonymousResourceCollectionDefinitionCreatedExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/AfterAnonymousResourceCollectionDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterEloquentCollectionDefinitionCreatedExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/AfterEloquentCollectionDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterJsonApiResourceDefinitionCreatedExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/AfterJsonApiResourceDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterJsonResourceDefinitionCreatedExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/AfterJsonResourceDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterResourceCollectionDefinitionCreatedExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/AfterResourceCollectionDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\AfterResponseDefinitionCreatedExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/AfterResponseDefinitionCreatedExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ArrayMergeReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/ArrayMergeReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\BinaryFileResponseTypeFactory' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/BinaryFileResponseTypeFactory.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\EloquentBuilderExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/EloquentBuilderExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\FacadeStaticMethodReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/FacadeStaticMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\JsonApiResourceCollectionMethodReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/JsonApiResourceCollectionMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\JsonApiResourceMethodReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/JsonApiResourceMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\JsonResourceExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/JsonResourceExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\JsonResponseMethodReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/JsonResponseMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ModelCollectionTypeResolver' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/ModelCollectionTypeResolver.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ModelExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/ModelExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\PaginateMethodsReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/PaginateMethodsReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\PossibleExceptionInfer' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/PossibleExceptionInfer.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\RequestExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/RequestExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ResourceCollectionTypeInfer' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/ResourceCollectionTypeInfer.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ResourceResponseMethodReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/ResourceResponseMethodReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ResponseFactoryTypeInfer' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/ResponseFactoryTypeInfer.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ShallowFunctionDefinition' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/ShallowFunctionDefinition.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\TransformsToResourceCollectionExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/TransformsToResourceCollectionExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\TranslationReturnTypeExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/TranslationReturnTypeExtension.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\TypeTraceInfer' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/TypeTraceInfer.php',
'Dedoc\\Scramble\\Support\\InferExtensions\\ValidatorTypeInfer' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/InferExtensions/ValidatorTypeInfer.php',
'Dedoc\\Scramble\\Support\\OperationBuilder' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationBuilder.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\DeprecationExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/DeprecationExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ErrorResponsesExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ErrorResponsesExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\AttributesParametersExtractor' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/AttributesParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\FormRequestParametersExtractor' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/FormRequestParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\InferredParameter' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/InferredParameter.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\JsonApiResourceParametersExtractor' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/JsonApiResourceParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\MethodCallsParametersExtractor' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/MethodCallsParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\ParameterExtractor' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/ParameterExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\PathParametersExtractor' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/PathParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\RulesDocumentationRetriever' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/RulesDocumentationRetriever.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\RulesNodes' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/RulesNodes.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\TypeBasedRulesDocumentationRetriever' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/TypeBasedRulesDocumentationRetriever.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ParameterExtractor\\ValidateCallParametersExtractor' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ParameterExtractor/ValidateCallParametersExtractor.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RequestBodyExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RequestBodyExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RequestEssentialsExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RequestEssentialsExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ResponseExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ResponseExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\ResponseHeadersExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/ResponseHeadersExtension.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\ComposedFormRequestRulesEvaluator' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/ComposedFormRequestRulesEvaluator.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\ConstFetchEvaluator' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/ConstFetchEvaluator.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\FormRequestRulesEvaluator' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/FormRequestRulesEvaluator.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\NodeRulesEvaluator' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/NodeRulesEvaluator.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\PublicProxy' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/PublicProxy.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesEvaluator\\RulesEvaluator' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesEvaluator/RulesEvaluator.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\DeepParametersMerger' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/DeepParametersMerger.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\GeneratesParametersFromRules' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/GeneratesParametersFromRules.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\ParametersExtractionResult' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/ParametersExtractionResult.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\PhpDocSchemaTransformer' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/PhpDocSchemaTransformer.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\QueryParametersConverter' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/QueryParametersConverter.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\RulesMapper' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/RulesMapper.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\RulesToParameters' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/RulesToParameters.php',
'Dedoc\\Scramble\\Support\\OperationExtensions\\RulesExtractor\\SchemaBagToParametersTransformer' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/OperationExtensions/RulesExtractor/SchemaBagToParametersTransformer.php',
'Dedoc\\Scramble\\Support\\PhpDoc' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/PhpDoc.php',
'Dedoc\\Scramble\\Support\\ResponseExtractor\\ModelInfo' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/ResponseExtractor/ModelInfo.php',
'Dedoc\\Scramble\\Support\\RouteInfo' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/RouteInfo.php',
'Dedoc\\Scramble\\Support\\RouteResponseTypeRetriever' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/RouteResponseTypeRetriever.php',
'Dedoc\\Scramble\\Support\\RuleTransforming\\NormalizedRule' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/RuleTransforming/NormalizedRule.php',
'Dedoc\\Scramble\\Support\\RuleTransforming\\RuleSetToSchemaTransformer' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/RuleTransforming/RuleSetToSchemaTransformer.php',
'Dedoc\\Scramble\\Support\\RuleTransforming\\RuleTransformerContext' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/RuleTransforming/RuleTransformerContext.php',
'Dedoc\\Scramble\\Support\\RuleTransforming\\SchemaBag' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/RuleTransforming/SchemaBag.php',
'Dedoc\\Scramble\\Support\\SchemaClassDocReflector' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/SchemaClassDocReflector.php',
'Dedoc\\Scramble\\Support\\ServerFactory' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/ServerFactory.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\CursorPaginatorTypeManager' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeManagers/CursorPaginatorTypeManager.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\JsonApiResourceTypeManager' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeManagers/JsonApiResourceTypeManager.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\LengthAwarePaginatorTypeManager' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeManagers/LengthAwarePaginatorTypeManager.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\ManagesProperties' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeManagers/ManagesProperties.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\PaginatorTypeManager' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeManagers/PaginatorTypeManager.php',
'Dedoc\\Scramble\\Support\\TypeManagers\\ResourceCollectionTypeManager' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeManagers/ResourceCollectionTypeManager.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\AnonymousResourceCollectionTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/AnonymousResourceCollectionTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ArrayableToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ArrayableToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\BinaryFileResponseToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/BinaryFileResponseToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\CarbonInterfaceToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/CarbonInterfaceToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\CollectionToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/CollectionToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\CursorPaginatorTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/CursorPaginatorTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\EloquentCollectionToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/EloquentCollectionToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\EnumToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/EnumToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\FlattensMergeValues' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/FlattensMergeValues.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\HandlesJsonApiResourceResponse' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/HandlesJsonApiResourceResponse.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\JsonApiAnonymousCollectionTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/JsonApiAnonymousCollectionTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\JsonApiPaginatedResourceResponseToSchemaExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/JsonApiPaginatedResourceResponseToSchemaExtension.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\JsonApiResourceResponseToSchemaExtension' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/JsonApiResourceResponseToSchemaExtension.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\JsonApiResourceTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/JsonApiResourceTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\JsonResourceTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/JsonResourceTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\LengthAwarePaginatorTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/LengthAwarePaginatorTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\MergesOpenApiObjects' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/MergesOpenApiObjects.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ModelToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ModelToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\PaginatedResourceResponseTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/PaginatedResourceResponseTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\PaginatorTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/PaginatorTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\PlainObjectToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/PlainObjectToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ResourceCollectionTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ResourceCollectionTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ResourceResponseTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ResourceResponseTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ResponsableTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ResponsableTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\ResponseTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/ResponseTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\StreamedResponseToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/StreamedResponseToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\VoidTypeToSchema' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/VoidTypeToSchema.php',
'Dedoc\\Scramble\\Support\\TypeToSchemaExtensions\\WithCollectedPaginatedItems' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/TypeToSchemaExtensions/WithCollectedPaginatedItems.php',
'Dedoc\\Scramble\\Support\\Type\\AbstractType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/AbstractType.php',
'Dedoc\\Scramble\\Support\\Type\\AbstractTypeVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/AbstractTypeVisitor.php',
'Dedoc\\Scramble\\Support\\Type\\ArrayItemType_' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/ArrayItemType_.php',
'Dedoc\\Scramble\\Support\\Type\\ArrayType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/ArrayType.php',
'Dedoc\\Scramble\\Support\\Type\\BooleanType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/BooleanType.php',
'Dedoc\\Scramble\\Support\\Type\\CallableStringType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/CallableStringType.php',
'Dedoc\\Scramble\\Support\\Type\\CoalesceType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/CoalesceType.php',
'Dedoc\\Scramble\\Support\\Type\\Contracts\\Generic' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Contracts/Generic.php',
'Dedoc\\Scramble\\Support\\Type\\Contracts\\LateResolvingType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Contracts/LateResolvingType.php',
'Dedoc\\Scramble\\Support\\Type\\Contracts\\LiteralString' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Contracts/LiteralString.php',
'Dedoc\\Scramble\\Support\\Type\\Contracts\\LiteralType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Contracts/LiteralType.php',
'Dedoc\\Scramble\\Support\\Type\\EnumCaseType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/EnumCaseType.php',
'Dedoc\\Scramble\\Support\\Type\\FloatType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/FloatType.php',
'Dedoc\\Scramble\\Support\\Type\\FunctionLikeType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/FunctionLikeType.php',
'Dedoc\\Scramble\\Support\\Type\\FunctionType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/FunctionType.php',
'Dedoc\\Scramble\\Support\\Type\\Generic' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Generic.php',
'Dedoc\\Scramble\\Support\\Type\\GenericClassStringType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/GenericClassStringType.php',
'Dedoc\\Scramble\\Support\\Type\\IntegerRangeType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/IntegerRangeType.php',
'Dedoc\\Scramble\\Support\\Type\\IntegerType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/IntegerType.php',
'Dedoc\\Scramble\\Support\\Type\\IntersectionType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/IntersectionType.php',
'Dedoc\\Scramble\\Support\\Type\\KeyedArrayType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/KeyedArrayType.php',
'Dedoc\\Scramble\\Support\\Type\\Literal\\LiteralBooleanType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Literal/LiteralBooleanType.php',
'Dedoc\\Scramble\\Support\\Type\\Literal\\LiteralFloatType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Literal/LiteralFloatType.php',
'Dedoc\\Scramble\\Support\\Type\\Literal\\LiteralIntegerType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Literal/LiteralIntegerType.php',
'Dedoc\\Scramble\\Support\\Type\\Literal\\LiteralStringType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Literal/LiteralStringType.php',
'Dedoc\\Scramble\\Support\\Type\\MissingType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/MissingType.php',
'Dedoc\\Scramble\\Support\\Type\\MixedType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/MixedType.php',
'Dedoc\\Scramble\\Support\\Type\\NeverType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/NeverType.php',
'Dedoc\\Scramble\\Support\\Type\\NullType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/NullType.php',
'Dedoc\\Scramble\\Support\\Type\\ObjectType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/ObjectType.php',
'Dedoc\\Scramble\\Support\\Type\\OffsetAccessType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/OffsetAccessType.php',
'Dedoc\\Scramble\\Support\\Type\\OffsetSetType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/OffsetSetType.php',
'Dedoc\\Scramble\\Support\\Type\\OffsetUnsetType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/OffsetUnsetType.php',
'Dedoc\\Scramble\\Support\\Type\\RecursiveTemplateSolver' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/RecursiveTemplateSolver.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\AbstractReferenceType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Reference/AbstractReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\CallableCallReferenceType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Reference/CallableCallReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\ConstFetchReferenceType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Reference/ConstFetchReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\MethodCallReferenceType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Reference/MethodCallReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\NewCallReferenceType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Reference/NewCallReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\PotentialMethodMutatingCallType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Reference/PotentialMethodMutatingCallType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\PropertyFetchReferenceType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Reference/PropertyFetchReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\StaticMethodCallReferenceType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Reference/StaticMethodCallReferenceType.php',
'Dedoc\\Scramble\\Support\\Type\\Reference\\StaticReference' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Reference/StaticReference.php',
'Dedoc\\Scramble\\Support\\Type\\SelfType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/SelfType.php',
'Dedoc\\Scramble\\Support\\Type\\StringType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/StringType.php',
'Dedoc\\Scramble\\Support\\Type\\TemplatePlaceholderType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TemplatePlaceholderType.php',
'Dedoc\\Scramble\\Support\\Type\\TemplateType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TemplateType.php',
'Dedoc\\Scramble\\Support\\Type\\TranslatedStringType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TranslatedStringType.php',
'Dedoc\\Scramble\\Support\\Type\\Type' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Type.php',
'Dedoc\\Scramble\\Support\\Type\\TypeAttributes' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TypeAttributes.php',
'Dedoc\\Scramble\\Support\\Type\\TypeHelper' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TypeHelper.php',
'Dedoc\\Scramble\\Support\\Type\\TypePath' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TypePath.php',
'Dedoc\\Scramble\\Support\\Type\\TypePathFindingVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TypePathFindingVisitor.php',
'Dedoc\\Scramble\\Support\\Type\\TypePathItem' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TypePathItem.php',
'Dedoc\\Scramble\\Support\\Type\\TypePathItemCondition' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TypePathItemCondition.php',
'Dedoc\\Scramble\\Support\\Type\\TypeTraverser' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TypeTraverser.php',
'Dedoc\\Scramble\\Support\\Type\\TypeVisitor' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TypeVisitor.php',
'Dedoc\\Scramble\\Support\\Type\\TypeWalker' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TypeWalker.php',
'Dedoc\\Scramble\\Support\\Type\\TypeWidener' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/TypeWidener.php',
'Dedoc\\Scramble\\Support\\Type\\Union' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/Union.php',
'Dedoc\\Scramble\\Support\\Type\\UnknownType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/UnknownType.php',
'Dedoc\\Scramble\\Support\\Type\\VoidType' => __DIR__ . '/..' . '/dedoc/scramble/src/Support/Type/VoidType.php',
'DeepCopy\\DeepCopy' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/DeepCopy.php',
'DeepCopy\\Exception\\CloneException' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Exception/CloneException.php',
'DeepCopy\\Exception\\PropertyException' => __DIR__ . '/..' . '/myclabs/deep-copy/src/DeepCopy/Exception/PropertyException.php',
@@ -3043,18 +3468,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'Illuminate\\View\\ViewFinderInterface' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/ViewFinderInterface.php',
'Illuminate\\View\\ViewName' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/ViewName.php',
'Illuminate\\View\\ViewServiceProvider' => __DIR__ . '/..' . '/laravel/framework/src/Illuminate/View/ViewServiceProvider.php',
'L5Swagger\\ConfigFactory' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/ConfigFactory.php',
'L5Swagger\\Console\\GenerateDocsCommand' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/Console/GenerateDocsCommand.php',
'L5Swagger\\CustomGeneratorInterface' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/CustomGeneratorInterface.php',
'L5Swagger\\Exceptions\\L5SwaggerException' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/Exceptions/L5SwaggerException.php',
'L5Swagger\\Generator' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/Generator.php',
'L5Swagger\\GeneratorFactory' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/GeneratorFactory.php',
'L5Swagger\\Http\\Controllers\\SwaggerAssetController' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/Http/Controllers/SwaggerAssetController.php',
'L5Swagger\\Http\\Controllers\\SwaggerController' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/Http/Controllers/SwaggerController.php',
'L5Swagger\\Http\\Middleware\\Config' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/Http/Middleware/Config.php',
'L5Swagger\\L5SwaggerFacade' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/L5SwaggerFacade.php',
'L5Swagger\\L5SwaggerServiceProvider' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/L5SwaggerServiceProvider.php',
'L5Swagger\\SecurityDefinitions' => __DIR__ . '/..' . '/darkaonline/l5-swagger/src/SecurityDefinitions.php',
'Laravel\\Pail\\Console\\Commands\\PailCommand' => __DIR__ . '/..' . '/laravel/pail/src/Console/Commands/PailCommand.php',
'Laravel\\Pail\\Contracts\\Printer' => __DIR__ . '/..' . '/laravel/pail/src/Contracts/Printer.php',
'Laravel\\Pail\\File' => __DIR__ . '/..' . '/laravel/pail/src/File.php',
@@ -3937,149 +4350,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'NunoMaduro\\Collision\\Provider' => __DIR__ . '/..' . '/nunomaduro/collision/src/Provider.php',
'NunoMaduro\\Collision\\SolutionsRepositories\\NullSolutionsRepository' => __DIR__ . '/..' . '/nunomaduro/collision/src/SolutionsRepositories/NullSolutionsRepository.php',
'NunoMaduro\\Collision\\Writer' => __DIR__ . '/..' . '/nunomaduro/collision/src/Writer.php',
'OpenApi\\Analysers\\AnalyserInterface' => __DIR__ . '/..' . '/zircote/swagger-php/src/Analysers/AnalyserInterface.php',
'OpenApi\\Analysers\\AnnotationFactoryInterface' => __DIR__ . '/..' . '/zircote/swagger-php/src/Analysers/AnnotationFactoryInterface.php',
'OpenApi\\Analysers\\AttributeAnnotationFactory' => __DIR__ . '/..' . '/zircote/swagger-php/src/Analysers/AttributeAnnotationFactory.php',
'OpenApi\\Analysers\\ComposerAutoloaderScanner' => __DIR__ . '/..' . '/zircote/swagger-php/src/Analysers/ComposerAutoloaderScanner.php',
'OpenApi\\Analysers\\DocBlockAnnotationFactory' => __DIR__ . '/..' . '/zircote/swagger-php/src/Analysers/DocBlockAnnotationFactory.php',
'OpenApi\\Analysers\\DocBlockParser' => __DIR__ . '/..' . '/zircote/swagger-php/src/Analysers/DocBlockParser.php',
'OpenApi\\Analysers\\ReflectionAnalyser' => __DIR__ . '/..' . '/zircote/swagger-php/src/Analysers/ReflectionAnalyser.php',
'OpenApi\\Analysers\\TokenScanner' => __DIR__ . '/..' . '/zircote/swagger-php/src/Analysers/TokenScanner.php',
'OpenApi\\Analysis' => __DIR__ . '/..' . '/zircote/swagger-php/src/Analysis.php',
'OpenApi\\Annotations\\AbstractAnnotation' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/AbstractAnnotation.php',
'OpenApi\\Annotations\\AdditionalProperties' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/AdditionalProperties.php',
'OpenApi\\Annotations\\Attachable' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Attachable.php',
'OpenApi\\Annotations\\Components' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Components.php',
'OpenApi\\Annotations\\Contact' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Contact.php',
'OpenApi\\Annotations\\CookieParameter' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/CookieParameter.php',
'OpenApi\\Annotations\\Delete' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Delete.php',
'OpenApi\\Annotations\\Discriminator' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Discriminator.php',
'OpenApi\\Annotations\\Encoding' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Encoding.php',
'OpenApi\\Annotations\\Examples' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Examples.php',
'OpenApi\\Annotations\\ExternalDocumentation' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/ExternalDocumentation.php',
'OpenApi\\Annotations\\Flow' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Flow.php',
'OpenApi\\Annotations\\Get' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Get.php',
'OpenApi\\Annotations\\Head' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Head.php',
'OpenApi\\Annotations\\Header' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Header.php',
'OpenApi\\Annotations\\HeaderParameter' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/HeaderParameter.php',
'OpenApi\\Annotations\\Info' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Info.php',
'OpenApi\\Annotations\\Items' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Items.php',
'OpenApi\\Annotations\\JsonContent' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/JsonContent.php',
'OpenApi\\Annotations\\JsonSchemaTrait' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/JsonSchemaTrait.php',
'OpenApi\\Annotations\\License' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/License.php',
'OpenApi\\Annotations\\Link' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Link.php',
'OpenApi\\Annotations\\MediaType' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/MediaType.php',
'OpenApi\\Annotations\\OpenApi' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/OpenApi.php',
'OpenApi\\Annotations\\Operation' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Operation.php',
'OpenApi\\Annotations\\Options' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Options.php',
'OpenApi\\Annotations\\Parameter' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Parameter.php',
'OpenApi\\Annotations\\Patch' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Patch.php',
'OpenApi\\Annotations\\PathItem' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/PathItem.php',
'OpenApi\\Annotations\\PathParameter' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/PathParameter.php',
'OpenApi\\Annotations\\Post' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Post.php',
'OpenApi\\Annotations\\Property' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Property.php',
'OpenApi\\Annotations\\Put' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Put.php',
'OpenApi\\Annotations\\Query' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Query.php',
'OpenApi\\Annotations\\QueryParameter' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/QueryParameter.php',
'OpenApi\\Annotations\\RequestBody' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/RequestBody.php',
'OpenApi\\Annotations\\Response' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Response.php',
'OpenApi\\Annotations\\Schema' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Schema.php',
'OpenApi\\Annotations\\SecurityScheme' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/SecurityScheme.php',
'OpenApi\\Annotations\\Server' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Server.php',
'OpenApi\\Annotations\\ServerVariable' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/ServerVariable.php',
'OpenApi\\Annotations\\Tag' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Tag.php',
'OpenApi\\Annotations\\Trace' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Trace.php',
'OpenApi\\Annotations\\Webhook' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Webhook.php',
'OpenApi\\Annotations\\Xml' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/Xml.php',
'OpenApi\\Annotations\\XmlContent' => __DIR__ . '/..' . '/zircote/swagger-php/src/Annotations/XmlContent.php',
'OpenApi\\Attributes\\AdditionalProperties' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/AdditionalProperties.php',
'OpenApi\\Attributes\\Attachable' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Attachable.php',
'OpenApi\\Attributes\\Components' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Components.php',
'OpenApi\\Attributes\\Contact' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Contact.php',
'OpenApi\\Attributes\\CookieParameter' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/CookieParameter.php',
'OpenApi\\Attributes\\Delete' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Delete.php',
'OpenApi\\Attributes\\Discriminator' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Discriminator.php',
'OpenApi\\Attributes\\Encoding' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Encoding.php',
'OpenApi\\Attributes\\Examples' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Examples.php',
'OpenApi\\Attributes\\ExternalDocumentation' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/ExternalDocumentation.php',
'OpenApi\\Attributes\\Flow' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Flow.php',
'OpenApi\\Attributes\\Get' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Get.php',
'OpenApi\\Attributes\\Head' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Head.php',
'OpenApi\\Attributes\\Header' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Header.php',
'OpenApi\\Attributes\\HeaderParameter' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/HeaderParameter.php',
'OpenApi\\Attributes\\Info' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Info.php',
'OpenApi\\Attributes\\Items' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Items.php',
'OpenApi\\Attributes\\JsonContent' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/JsonContent.php',
'OpenApi\\Attributes\\License' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/License.php',
'OpenApi\\Attributes\\Link' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Link.php',
'OpenApi\\Attributes\\MediaType' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/MediaType.php',
'OpenApi\\Attributes\\OpenApi' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/OpenApi.php',
'OpenApi\\Attributes\\OperationTrait' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/OperationTrait.php',
'OpenApi\\Attributes\\Options' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Options.php',
'OpenApi\\Attributes\\Parameter' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Parameter.php',
'OpenApi\\Attributes\\ParameterTrait' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/ParameterTrait.php',
'OpenApi\\Attributes\\Patch' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Patch.php',
'OpenApi\\Attributes\\PathItem' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/PathItem.php',
'OpenApi\\Attributes\\PathParameter' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/PathParameter.php',
'OpenApi\\Attributes\\Post' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Post.php',
'OpenApi\\Attributes\\Property' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Property.php',
'OpenApi\\Attributes\\Put' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Put.php',
'OpenApi\\Attributes\\Query' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Query.php',
'OpenApi\\Attributes\\QueryParameter' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/QueryParameter.php',
'OpenApi\\Attributes\\RequestBody' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/RequestBody.php',
'OpenApi\\Attributes\\Response' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Response.php',
'OpenApi\\Attributes\\Schema' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Schema.php',
'OpenApi\\Attributes\\SecurityScheme' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/SecurityScheme.php',
'OpenApi\\Attributes\\Server' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Server.php',
'OpenApi\\Attributes\\ServerVariable' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/ServerVariable.php',
'OpenApi\\Attributes\\Tag' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Tag.php',
'OpenApi\\Attributes\\Trace' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Trace.php',
'OpenApi\\Attributes\\Webhook' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Webhook.php',
'OpenApi\\Attributes\\Xml' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/Xml.php',
'OpenApi\\Attributes\\XmlContent' => __DIR__ . '/..' . '/zircote/swagger-php/src/Attributes/XmlContent.php',
'OpenApi\\Console\\GenerateCommand' => __DIR__ . '/..' . '/zircote/swagger-php/src/Console/GenerateCommand.php',
'OpenApi\\Console\\GenerateFormat' => __DIR__ . '/..' . '/zircote/swagger-php/src/Console/GenerateFormat.php',
'OpenApi\\Console\\GenerateInput' => __DIR__ . '/..' . '/zircote/swagger-php/src/Console/GenerateInput.php',
'OpenApi\\Context' => __DIR__ . '/..' . '/zircote/swagger-php/src/Context.php',
'OpenApi\\Generator' => __DIR__ . '/..' . '/zircote/swagger-php/src/Generator.php',
'OpenApi\\GeneratorAwareInterface' => __DIR__ . '/..' . '/zircote/swagger-php/src/GeneratorAwareInterface.php',
'OpenApi\\GeneratorAwareTrait' => __DIR__ . '/..' . '/zircote/swagger-php/src/GeneratorAwareTrait.php',
'OpenApi\\Loggers\\DefaultLogger' => __DIR__ . '/..' . '/zircote/swagger-php/src/Loggers/DefaultLogger.php',
'OpenApi\\OpenApiException' => __DIR__ . '/..' . '/zircote/swagger-php/src/OpenApiException.php',
'OpenApi\\Pipeline' => __DIR__ . '/..' . '/zircote/swagger-php/src/Pipeline.php',
'OpenApi\\Processors\\AugmentDiscriminators' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/AugmentDiscriminators.php',
'OpenApi\\Processors\\AugmentItems' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/AugmentItems.php',
'OpenApi\\Processors\\AugmentMediaType' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/AugmentMediaType.php',
'OpenApi\\Processors\\AugmentParameters' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/AugmentParameters.php',
'OpenApi\\Processors\\AugmentProperties' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/AugmentProperties.php',
'OpenApi\\Processors\\AugmentRefs' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/AugmentRefs.php',
'OpenApi\\Processors\\AugmentRequestBody' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/AugmentRequestBody.php',
'OpenApi\\Processors\\AugmentSchemas' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/AugmentSchemas.php',
'OpenApi\\Processors\\AugmentTags' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/AugmentTags.php',
'OpenApi\\Processors\\BuildPaths' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/BuildPaths.php',
'OpenApi\\Processors\\CleanUnmerged' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/CleanUnmerged.php',
'OpenApi\\Processors\\CleanUnusedComponents' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/CleanUnusedComponents.php',
'OpenApi\\Processors\\Concerns\\AnnotationTrait' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/Concerns/AnnotationTrait.php',
'OpenApi\\Processors\\Concerns\\DocblockTrait' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/Concerns/DocblockTrait.php',
'OpenApi\\Processors\\Concerns\\MergePropertiesTrait' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/Concerns/MergePropertiesTrait.php',
'OpenApi\\Processors\\Concerns\\RefTrait' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/Concerns/RefTrait.php',
'OpenApi\\Processors\\DocBlockDescriptions' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/DocBlockDescriptions.php',
'OpenApi\\Processors\\ExpandClasses' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/ExpandClasses.php',
'OpenApi\\Processors\\ExpandEnums' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/ExpandEnums.php',
'OpenApi\\Processors\\ExpandInterfaces' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/ExpandInterfaces.php',
'OpenApi\\Processors\\ExpandTraits' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/ExpandTraits.php',
'OpenApi\\Processors\\MergeIntoComponents' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/MergeIntoComponents.php',
'OpenApi\\Processors\\MergeIntoOpenApi' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/MergeIntoOpenApi.php',
'OpenApi\\Processors\\MergeJsonContent' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/MergeJsonContent.php',
'OpenApi\\Processors\\MergeXmlContent' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/MergeXmlContent.php',
'OpenApi\\Processors\\OperationId' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/OperationId.php',
'OpenApi\\Processors\\PathFilter' => __DIR__ . '/..' . '/zircote/swagger-php/src/Processors/PathFilter.php',
'OpenApi\\Serializer' => __DIR__ . '/..' . '/zircote/swagger-php/src/Serializer.php',
'OpenApi\\SourceFinder' => __DIR__ . '/..' . '/zircote/swagger-php/src/SourceFinder.php',
'OpenApi\\TypeResolverInterface' => __DIR__ . '/..' . '/zircote/swagger-php/src/TypeResolverInterface.php',
'OpenApi\\Type\\AbstractTypeResolver' => __DIR__ . '/..' . '/zircote/swagger-php/src/Type/AbstractTypeResolver.php',
'OpenApi\\Type\\LegacyTypeResolver' => __DIR__ . '/..' . '/zircote/swagger-php/src/Type/LegacyTypeResolver.php',
'OpenApi\\Type\\TypeInfoTypeResolver' => __DIR__ . '/..' . '/zircote/swagger-php/src/Type/TypeInfoTypeResolver.php',
'Override' => __DIR__ . '/..' . '/symfony/polyfill-php83/Resources/stubs/Override.php',
'PHPStan\\PhpDocParser\\Ast\\AbstractNodeVisitor' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/AbstractNodeVisitor.php',
'PHPStan\\PhpDocParser\\Ast\\Attribute' => __DIR__ . '/..' . '/phpstan/phpdoc-parser/src/Ast/Attribute.php',
@@ -5861,13 +6131,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'Psy\\VersionUpdater\\IntervalChecker' => __DIR__ . '/..' . '/psy/psysh/src/VersionUpdater/IntervalChecker.php',
'Psy\\VersionUpdater\\NoopChecker' => __DIR__ . '/..' . '/psy/psysh/src/VersionUpdater/NoopChecker.php',
'Psy\\VersionUpdater\\SelfUpdate' => __DIR__ . '/..' . '/psy/psysh/src/VersionUpdater/SelfUpdate.php',
'Radebatz\\TypeInfoExtras\\TypeFactoryTrait' => __DIR__ . '/..' . '/radebatz/type-info-extras/src/TypeFactoryTrait.php',
'Radebatz\\TypeInfoExtras\\TypeResolver\\ResolverExtrasTrait' => __DIR__ . '/..' . '/radebatz/type-info-extras/src/TypeResolver/ResolverExtrasTrait.php',
'Radebatz\\TypeInfoExtras\\TypeResolver\\StringTypeResolver' => __DIR__ . '/..' . '/radebatz/type-info-extras/src/TypeResolver/StringTypeResolver.php',
'Radebatz\\TypeInfoExtras\\Type\\ClassLikeType' => __DIR__ . '/..' . '/radebatz/type-info-extras/src/Type/ClassLikeType.php',
'Radebatz\\TypeInfoExtras\\Type\\ExplicitType' => __DIR__ . '/..' . '/radebatz/type-info-extras/src/Type/ExplicitType.php',
'Radebatz\\TypeInfoExtras\\Type\\IntRangeType' => __DIR__ . '/..' . '/radebatz/type-info-extras/src/Type/IntRangeType.php',
'Radebatz\\TypeInfoExtras\\Type\\Type' => __DIR__ . '/..' . '/radebatz/type-info-extras/src/Type/Type.php',
'Ramsey\\Collection\\AbstractArray' => __DIR__ . '/..' . '/ramsey/collection/src/AbstractArray.php',
'Ramsey\\Collection\\AbstractCollection' => __DIR__ . '/..' . '/ramsey/collection/src/AbstractCollection.php',
'Ramsey\\Collection\\AbstractSet' => __DIR__ . '/..' . '/ramsey/collection/src/AbstractSet.php',
@@ -6219,6 +6482,40 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'SebastianBergmann\\Type\\UnknownType' => __DIR__ . '/..' . '/sebastian/type/src/type/UnknownType.php',
'SebastianBergmann\\Type\\VoidType' => __DIR__ . '/..' . '/sebastian/type/src/type/VoidType.php',
'SebastianBergmann\\Version' => __DIR__ . '/..' . '/sebastian/version/src/Version.php',
'Spatie\\LaravelPackageTools\\Commands\\Concerns\\AskToRunMigrations' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Commands/Concerns/AskToRunMigrations.php',
'Spatie\\LaravelPackageTools\\Commands\\Concerns\\AskToStarRepoOnGitHub' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Commands/Concerns/AskToStarRepoOnGitHub.php',
'Spatie\\LaravelPackageTools\\Commands\\Concerns\\PublishesResources' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Commands/Concerns/PublishesResources.php',
'Spatie\\LaravelPackageTools\\Commands\\Concerns\\SupportsServiceProviderInApp' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Commands/Concerns/SupportsServiceProviderInApp.php',
'Spatie\\LaravelPackageTools\\Commands\\Concerns\\SupportsStartWithEndWith' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Commands/Concerns/SupportsStartWithEndWith.php',
'Spatie\\LaravelPackageTools\\Commands\\InstallCommand' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Commands/InstallCommand.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessAssets' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessAssets.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessBladeComponents' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessBladeComponents.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessCommands' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessCommands.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessConfigs' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessConfigs.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessInertia' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessInertia.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessMigrations' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessMigrations.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessRoutes' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessRoutes.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessServiceProviders' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessServiceProviders.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessTranslations' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessTranslations.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessViewComposers' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessViewComposers.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessViewSharedData' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessViewSharedData.php',
'Spatie\\LaravelPackageTools\\Concerns\\PackageServiceProvider\\ProcessViews' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessViews.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasAssets' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasAssets.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasBladeComponents' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasBladeComponents.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasCommands' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasCommands.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasConfigs' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasConfigs.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasInertia' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasInertia.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasInstallCommand' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasInstallCommand.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasMigrations' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasMigrations.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasRoutes' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasRoutes.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasServiceProviders' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasServiceProviders.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasTranslations' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasTranslations.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasViewComposers' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasViewComposers.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasViewSharedData' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasViewSharedData.php',
'Spatie\\LaravelPackageTools\\Concerns\\Package\\HasViews' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Concerns/Package/HasViews.php',
'Spatie\\LaravelPackageTools\\Exceptions\\InvalidPackage' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Exceptions/InvalidPackage.php',
'Spatie\\LaravelPackageTools\\Package' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/Package.php',
'Spatie\\LaravelPackageTools\\PackageServiceProvider' => __DIR__ . '/..' . '/spatie/laravel-package-tools/src/PackageServiceProvider.php',
'Stringable' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Stringable.php',
'Symfony\\Component\\Clock\\Clock' => __DIR__ . '/..' . '/symfony/clock/Clock.php',
'Symfony\\Component\\Clock\\ClockAwareTrait' => __DIR__ . '/..' . '/symfony/clock/ClockAwareTrait.php',
@@ -7093,37 +7390,6 @@ class ComposerStaticInitd8f67b824a1bf31c8999ead558d9b485
'Symfony\\Component\\Translation\\Util\\XliffUtils' => __DIR__ . '/..' . '/symfony/translation/Util/XliffUtils.php',
'Symfony\\Component\\Translation\\Writer\\TranslationWriter' => __DIR__ . '/..' . '/symfony/translation/Writer/TranslationWriter.php',
'Symfony\\Component\\Translation\\Writer\\TranslationWriterInterface' => __DIR__ . '/..' . '/symfony/translation/Writer/TranslationWriterInterface.php',
'Symfony\\Component\\TypeInfo\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/symfony/type-info/Exception/ExceptionInterface.php',
'Symfony\\Component\\TypeInfo\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/symfony/type-info/Exception/InvalidArgumentException.php',
'Symfony\\Component\\TypeInfo\\Exception\\LogicException' => __DIR__ . '/..' . '/symfony/type-info/Exception/LogicException.php',
'Symfony\\Component\\TypeInfo\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/type-info/Exception/RuntimeException.php',
'Symfony\\Component\\TypeInfo\\Exception\\UnsupportedException' => __DIR__ . '/..' . '/symfony/type-info/Exception/UnsupportedException.php',
'Symfony\\Component\\TypeInfo\\Type' => __DIR__ . '/..' . '/symfony/type-info/Type.php',
'Symfony\\Component\\TypeInfo\\TypeContext\\TypeContext' => __DIR__ . '/..' . '/symfony/type-info/TypeContext/TypeContext.php',
'Symfony\\Component\\TypeInfo\\TypeContext\\TypeContextFactory' => __DIR__ . '/..' . '/symfony/type-info/TypeContext/TypeContextFactory.php',
'Symfony\\Component\\TypeInfo\\TypeFactoryTrait' => __DIR__ . '/..' . '/symfony/type-info/TypeFactoryTrait.php',
'Symfony\\Component\\TypeInfo\\TypeIdentifier' => __DIR__ . '/..' . '/symfony/type-info/TypeIdentifier.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\PhpDocAwareReflectionTypeResolver' => __DIR__ . '/..' . '/symfony/type-info/TypeResolver/PhpDocAwareReflectionTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\ReflectionParameterTypeResolver' => __DIR__ . '/..' . '/symfony/type-info/TypeResolver/ReflectionParameterTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\ReflectionPropertyTypeResolver' => __DIR__ . '/..' . '/symfony/type-info/TypeResolver/ReflectionPropertyTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\ReflectionReturnTypeResolver' => __DIR__ . '/..' . '/symfony/type-info/TypeResolver/ReflectionReturnTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\ReflectionTypeResolver' => __DIR__ . '/..' . '/symfony/type-info/TypeResolver/ReflectionTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\StringTypeResolver' => __DIR__ . '/..' . '/symfony/type-info/TypeResolver/StringTypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\TypeResolver' => __DIR__ . '/..' . '/symfony/type-info/TypeResolver/TypeResolver.php',
'Symfony\\Component\\TypeInfo\\TypeResolver\\TypeResolverInterface' => __DIR__ . '/..' . '/symfony/type-info/TypeResolver/TypeResolverInterface.php',
'Symfony\\Component\\TypeInfo\\Type\\ArrayShapeType' => __DIR__ . '/..' . '/symfony/type-info/Type/ArrayShapeType.php',
'Symfony\\Component\\TypeInfo\\Type\\BackedEnumType' => __DIR__ . '/..' . '/symfony/type-info/Type/BackedEnumType.php',
'Symfony\\Component\\TypeInfo\\Type\\BuiltinType' => __DIR__ . '/..' . '/symfony/type-info/Type/BuiltinType.php',
'Symfony\\Component\\TypeInfo\\Type\\CollectionType' => __DIR__ . '/..' . '/symfony/type-info/Type/CollectionType.php',
'Symfony\\Component\\TypeInfo\\Type\\CompositeTypeInterface' => __DIR__ . '/..' . '/symfony/type-info/Type/CompositeTypeInterface.php',
'Symfony\\Component\\TypeInfo\\Type\\EnumType' => __DIR__ . '/..' . '/symfony/type-info/Type/EnumType.php',
'Symfony\\Component\\TypeInfo\\Type\\GenericType' => __DIR__ . '/..' . '/symfony/type-info/Type/GenericType.php',
'Symfony\\Component\\TypeInfo\\Type\\IntersectionType' => __DIR__ . '/..' . '/symfony/type-info/Type/IntersectionType.php',
'Symfony\\Component\\TypeInfo\\Type\\NullableType' => __DIR__ . '/..' . '/symfony/type-info/Type/NullableType.php',
'Symfony\\Component\\TypeInfo\\Type\\ObjectType' => __DIR__ . '/..' . '/symfony/type-info/Type/ObjectType.php',
'Symfony\\Component\\TypeInfo\\Type\\TemplateType' => __DIR__ . '/..' . '/symfony/type-info/Type/TemplateType.php',
'Symfony\\Component\\TypeInfo\\Type\\UnionType' => __DIR__ . '/..' . '/symfony/type-info/Type/UnionType.php',
'Symfony\\Component\\TypeInfo\\Type\\WrappingTypeInterface' => __DIR__ . '/..' . '/symfony/type-info/Type/WrappingTypeInterface.php',
'Symfony\\Component\\Uid\\AbstractUid' => __DIR__ . '/..' . '/symfony/uid/AbstractUid.php',
'Symfony\\Component\\Uid\\BinaryUtil' => __DIR__ . '/..' . '/symfony/uid/BinaryUtil.php',
'Symfony\\Component\\Uid\\Command\\GenerateUlidCommand' => __DIR__ . '/..' . '/symfony/uid/Command/GenerateUlidCommand.php',
+107 -347
View File
@@ -136,54 +136,56 @@
"install-path": "../carbonphp/carbon-doctrine-types"
},
{
"name": "darkaonline/l5-swagger",
"version": "11.1.0",
"version_normalized": "11.1.0.0",
"name": "dedoc/scramble",
"version": "v0.13.28",
"version_normalized": "0.13.28.0",
"source": {
"type": "git",
"url": "https://github.com/DarkaOnLine/L5-Swagger.git",
"reference": "110b59478c9417c13794cef62a82b019433d642a"
"url": "https://github.com/dedoc/scramble.git",
"reference": "e50927c732a341bb743671066892eec6bd2e958b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DarkaOnLine/L5-Swagger/zipball/110b59478c9417c13794cef62a82b019433d642a",
"reference": "110b59478c9417c13794cef62a82b019433d642a",
"url": "https://api.github.com/repos/dedoc/scramble/zipball/e50927c732a341bb743671066892eec6bd2e958b",
"reference": "e50927c732a341bb743671066892eec6bd2e958b",
"shasum": ""
},
"require": {
"ext-json": "*",
"laravel/framework": "^13.0 || ^12.1 || ^11.44",
"php": "^8.2",
"swagger-api/swagger-ui": ">=5.18.3",
"symfony/yaml": "^5.0 || ^6.0 || ^7.0 || ^8.0",
"zircote/swagger-php": "^6.0"
"illuminate/contracts": "^10.0|^11.0|^12.0|^13.0",
"myclabs/deep-copy": "^1.12",
"nikic/php-parser": "^5.0",
"php": "^8.1",
"phpstan/phpdoc-parser": "^1.0|^2.0",
"spatie/laravel-package-tools": "^1.9.2"
},
"require-dev": {
"mockery/mockery": "1.*",
"orchestra/testbench": "^11.0 || ^10.0 || ^9.0 || ^8.0 || 7.* || ^6.15 || 5.*",
"php-coveralls/php-coveralls": "^2.0",
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^11.0"
"larastan/larastan": "^3.3",
"laravel/pint": "^v1.1.0",
"nunomaduro/collision": "^7.0|^8.0",
"orchestra/testbench": "^8.0|^9.0|^10.0|^11.0",
"pestphp/pest": "^2.34|^3.7|^4.4",
"pestphp/pest-plugin-laravel": "^2.3|^3.1|^4.1",
"phpstan/extension-installer": "^1.4",
"phpstan/phpstan-deprecation-rules": "^2.0",
"phpstan/phpstan-phpunit": "^2.0",
"phpunit/phpunit": "^10.5|^11.5.3|^12.5.12",
"spatie/laravel-permission": "^6.10|^7.2",
"spatie/pest-plugin-snapshots": "^2.1"
},
"time": "2026-06-12T10:04:41+00:00",
"time": "2026-06-14T18:21:12+00:00",
"type": "library",
"extra": {
"laravel": {
"aliases": {
"L5Swagger": "L5Swagger\\L5SwaggerFacade"
},
"providers": [
"L5Swagger\\L5SwaggerServiceProvider"
"Dedoc\\Scramble\\ScrambleServiceProvider"
]
}
},
"installation-source": "dist",
"autoload": {
"files": [
"src/helpers.php"
],
"psr-4": {
"L5Swagger\\": "src"
"Dedoc\\Scramble\\": "src",
"Dedoc\\Scramble\\Database\\Factories\\": "database/factories"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -192,31 +194,29 @@
],
"authors": [
{
"name": "Darius Matulionis",
"email": "darius@matulionis.lt"
"name": "Roman Lytvynenko",
"email": "litvinenko95@gmail.com",
"role": "Developer"
}
],
"description": "OpenApi or Swagger integration to Laravel",
"description": "Automatic generation of API documentation for Laravel applications.",
"homepage": "https://github.com/dedoc/scramble",
"keywords": [
"api",
"documentation",
"laravel",
"openapi",
"specification",
"swagger",
"ui"
"openapi"
],
"support": {
"issues": "https://github.com/DarkaOnLine/L5-Swagger/issues",
"source": "https://github.com/DarkaOnLine/L5-Swagger/tree/11.1.0"
"issues": "https://github.com/dedoc/scramble/issues",
"source": "https://github.com/dedoc/scramble/tree/v0.13.28"
},
"funding": [
{
"url": "https://github.com/DarkaOnLine",
"url": "https://github.com/romalytvynenko",
"type": "github"
}
],
"install-path": "../darkaonline/l5-swagger"
"install-path": "../dedoc/scramble"
},
{
"name": "dflydev/dot-access-data",
@@ -4676,71 +4676,6 @@
},
"install-path": "../psy/psysh"
},
{
"name": "radebatz/type-info-extras",
"version": "1.0.7",
"version_normalized": "1.0.7.0",
"source": {
"type": "git",
"url": "https://github.com/DerManoMann/type-info-extras.git",
"reference": "95a524a74a61648b44e355cb33d38db4b17ef5ce"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/DerManoMann/type-info-extras/zipball/95a524a74a61648b44e355cb33d38db4b17ef5ce",
"reference": "95a524a74a61648b44e355cb33d38db4b17ef5ce",
"shasum": ""
},
"require": {
"php": ">=8.2",
"phpstan/phpdoc-parser": "^2.0",
"symfony/type-info": "^7.3.8 || ^7.4.1 || ^8.0 || ^8.1-@dev"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^3.70",
"phpstan/phpstan": "^2.1",
"phpunit/phpunit": "^11.0"
},
"time": "2026-03-06T22:40:29+00:00",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Radebatz\\TypeInfoExtras\\": "src"
},
"exclude-from-classmap": [
"/tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Martin Rademacher",
"email": "mano@radebatz.org"
}
],
"description": "Extras for symfony/type-info",
"homepage": "http://radebatz.net/mano/",
"keywords": [
"component",
"symfony",
"type-info",
"types"
],
"support": {
"issues": "https://github.com/DerManoMann/type-info-extras/issues",
"source": "https://github.com/DerManoMann/type-info-extras/tree/1.0.7"
},
"install-path": "../radebatz/type-info-extras"
},
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
@@ -5979,6 +5914,70 @@
],
"install-path": "../sebastian/version"
},
{
"name": "spatie/laravel-package-tools",
"version": "1.93.1",
"version_normalized": "1.93.1.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-package-tools.git",
"reference": "d5552849801f2642aea710557463234b59ef65eb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/d5552849801f2642aea710557463234b59ef65eb",
"reference": "d5552849801f2642aea710557463234b59ef65eb",
"shasum": ""
},
"require": {
"illuminate/contracts": "^10.0|^11.0|^12.0|^13.0",
"php": "^8.1"
},
"require-dev": {
"mockery/mockery": "^1.5",
"orchestra/testbench": "^8.0|^9.2|^10.0|^11.0",
"pestphp/pest": "^2.1|^3.1|^4.0",
"phpunit/php-code-coverage": "^10.0|^11.0|^12.0",
"phpunit/phpunit": "^10.5|^11.5|^12.5",
"spatie/pest-plugin-test-time": "^2.2|^3.0"
},
"time": "2026-05-19T14:06:37+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Spatie\\LaravelPackageTools\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Freek Van der Herten",
"email": "freek@spatie.be",
"role": "Developer"
}
],
"description": "Tools for creating Laravel packages",
"homepage": "https://github.com/spatie/laravel-package-tools",
"keywords": [
"laravel-package-tools",
"spatie"
],
"support": {
"issues": "https://github.com/spatie/laravel-package-tools/issues",
"source": "https://github.com/spatie/laravel-package-tools/tree/1.93.1"
},
"funding": [
{
"url": "https://github.com/spatie",
"type": "github"
}
],
"install-path": "../spatie/laravel-package-tools"
},
{
"name": "staabm/side-effects-detector",
"version": "1.0.5",
@@ -6034,70 +6033,6 @@
],
"install-path": "../staabm/side-effects-detector"
},
{
"name": "swagger-api/swagger-ui",
"version": "v5.32.6",
"version_normalized": "5.32.6.0",
"source": {
"type": "git",
"url": "https://github.com/swagger-api/swagger-ui.git",
"reference": "dcdca62c8b64a0a54e4decd4e1a6c3c712fdcc60"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/dcdca62c8b64a0a54e4decd4e1a6c3c712fdcc60",
"reference": "dcdca62c8b64a0a54e4decd4e1a6c3c712fdcc60",
"shasum": ""
},
"time": "2026-05-12T09:35:37+00:00",
"type": "library",
"installation-source": "dist",
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Anna Bodnia",
"email": "anna.bodnia@gmail.com"
},
{
"name": "Buu Nguyen",
"email": "buunguyen@gmail.com"
},
{
"name": "Josh Ponelat",
"email": "jponelat@gmail.com"
},
{
"name": "Kyle Shockey",
"email": "kyleshockey1@gmail.com"
},
{
"name": "Robert Barnwell",
"email": "robert@robertismy.name"
},
{
"name": "Sahar Jafari",
"email": "shr.jafari@gmail.com"
}
],
"description": " Swagger UI is a collection of HTML, Javascript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.",
"homepage": "http://swagger.io",
"keywords": [
"api",
"documentation",
"openapi",
"specification",
"swagger",
"ui"
],
"support": {
"issues": "https://github.com/swagger-api/swagger-ui/issues",
"source": "https://github.com/swagger-api/swagger-ui/tree/v5.32.6"
},
"install-path": "../swagger-api/swagger-ui"
},
{
"name": "symfony/clock",
"version": "v7.4.8",
@@ -8526,92 +8461,6 @@
],
"install-path": "../symfony/translation-contracts"
},
{
"name": "symfony/type-info",
"version": "v7.4.9",
"version_normalized": "7.4.9.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/type-info.git",
"reference": "cafeedbf157b890e94ac5b83eaed85595106d5d6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/type-info/zipball/cafeedbf157b890e94ac5b83eaed85595106d5d6",
"reference": "cafeedbf157b890e94ac5b83eaed85595106d5d6",
"shasum": ""
},
"require": {
"php": ">=8.2",
"psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3"
},
"conflict": {
"phpstan/phpdoc-parser": "<1.30"
},
"require-dev": {
"phpstan/phpdoc-parser": "^1.30|^2.0"
},
"time": "2026-04-22T15:21:55+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Component\\TypeInfo\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Mathias Arlaud",
"email": "mathias.arlaud@gmail.com"
},
{
"name": "Baptiste LEDUC",
"email": "baptiste.leduc@gmail.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Extracts PHP types information.",
"homepage": "https://symfony.com",
"keywords": [
"PHPStan",
"phpdoc",
"symfony",
"type"
],
"support": {
"source": "https://github.com/symfony/type-info/tree/v7.4.9"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://github.com/nicolas-grekas",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"install-path": "../symfony/type-info"
},
{
"name": "symfony/uid",
"version": "v7.4.9",
@@ -9136,103 +8985,11 @@
}
],
"install-path": "../voku/portable-ascii"
},
{
"name": "zircote/swagger-php",
"version": "6.2.0",
"version_normalized": "6.2.0.0",
"source": {
"type": "git",
"url": "https://github.com/zircote/swagger-php.git",
"reference": "060af3bb9c4cba6a5859aba2c51cd1c129479410"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zircote/swagger-php/zipball/060af3bb9c4cba6a5859aba2c51cd1c129479410",
"reference": "060af3bb9c4cba6a5859aba2c51cd1c129479410",
"shasum": ""
},
"require": {
"nikic/php-parser": "^4.19 || ^5.0",
"php": ">=8.2",
"phpstan/phpdoc-parser": "^2.0",
"psr/log": "^1.1 || ^2.0 || ^3.0",
"radebatz/type-info-extras": "^1.0.2",
"symfony/console": "^7.4 || ^8.0",
"symfony/deprecation-contracts": "^2 || ^3",
"symfony/finder": "^5.0 || ^6.0 || ^7.0 || ^8.0",
"symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0"
},
"conflict": {
"symfony/process": ">=6, <6.4.14"
},
"require-dev": {
"composer/package-versions-deprecated": "^1.11",
"doctrine/annotations": "^2.0",
"friendsofphp/php-cs-fixer": "^3.62.0",
"phpstan/phpstan": "^2.0",
"phpunit/phpunit": "^11.5 || >=12.5.22",
"rector/rector": "^2.3.1"
},
"time": "2026-06-14T06:51:56+00:00",
"bin": [
"bin/openapi"
],
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.x-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"OpenApi\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
],
"authors": [
{
"name": "Robert Allen",
"email": "zircote@gmail.com"
},
{
"name": "Bob Fanger",
"email": "bfanger@gmail.com",
"homepage": "https://bfanger.nl"
},
{
"name": "Martin Rademacher",
"email": "mano@radebatz.net",
"homepage": "https://radebatz.net"
}
],
"description": "Generate interactive documentation for your RESTful API using PHP attributes (preferred) or PHPDoc annotations",
"homepage": "https://github.com/zircote/swagger-php",
"keywords": [
"api",
"json",
"rest",
"service discovery"
],
"support": {
"issues": "https://github.com/zircote/swagger-php/issues",
"source": "https://github.com/zircote/swagger-php/tree/6.2.0"
},
"funding": [
{
"url": "https://github.com/zircote",
"type": "github"
}
],
"install-path": "../zircote/swagger-php"
}
],
"dev": true,
"dev-package-names": [
"dedoc/scramble",
"fakerphp/faker",
"filp/whoops",
"hamcrest/hamcrest-php",
@@ -9244,6 +9001,7 @@
"nunomaduro/collision",
"phar-io/manifest",
"phar-io/version",
"phpstan/phpdoc-parser",
"phpunit/php-code-coverage",
"phpunit/php-file-iterator",
"phpunit/php-invoker",
@@ -9265,7 +9023,9 @@
"sebastian/recursion-context",
"sebastian/type",
"sebastian/version",
"spatie/laravel-package-tools",
"staabm/side-effects-detector",
"symfony/yaml",
"theseer/tokenizer"
]
}
+26 -53
View File
@@ -1,9 +1,9 @@
<?php return array(
'root' => array(
'name' => 'laravel/laravel',
'pretty_version' => '1.0.0+no-version-set',
'version' => '1.0.0.0',
'reference' => null,
'pretty_version' => 'dev-main',
'version' => 'dev-main',
'reference' => '2f805a233dbd854665db766b12582701833e8622',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -34,21 +34,21 @@
0 => '*',
),
),
'darkaonline/l5-swagger' => array(
'pretty_version' => '11.1.0',
'version' => '11.1.0.0',
'reference' => '110b59478c9417c13794cef62a82b019433d642a',
'type' => 'library',
'install_path' => __DIR__ . '/../darkaonline/l5-swagger',
'aliases' => array(),
'dev_requirement' => false,
),
'davedevelopment/hamcrest-php' => array(
'dev_requirement' => true,
'replaced' => array(
0 => '*',
),
),
'dedoc/scramble' => array(
'pretty_version' => 'v0.13.28',
'version' => '0.13.28.0',
'reference' => 'e50927c732a341bb743671066892eec6bd2e958b',
'type' => 'library',
'install_path' => __DIR__ . '/../dedoc/scramble',
'aliases' => array(),
'dev_requirement' => true,
),
'dflydev/dot-access-data' => array(
'pretty_version' => 'v3.0.3',
'version' => '3.0.3.0',
@@ -407,9 +407,9 @@
'dev_requirement' => false,
),
'laravel/laravel' => array(
'pretty_version' => '1.0.0+no-version-set',
'version' => '1.0.0.0',
'reference' => null,
'pretty_version' => 'dev-main',
'version' => 'dev-main',
'reference' => '2f805a233dbd854665db766b12582701833e8622',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -662,7 +662,7 @@
'type' => 'library',
'install_path' => __DIR__ . '/../phpstan/phpdoc-parser',
'aliases' => array(),
'dev_requirement' => false,
'dev_requirement' => true,
),
'phpunit/php-code-coverage' => array(
'pretty_version' => '11.0.12',
@@ -848,15 +848,6 @@
'aliases' => array(),
'dev_requirement' => false,
),
'radebatz/type-info-extras' => array(
'pretty_version' => '1.0.7',
'version' => '1.0.7.0',
'reference' => '95a524a74a61648b44e355cb33d38db4b17ef5ce',
'type' => 'library',
'install_path' => __DIR__ . '/../radebatz/type-info-extras',
'aliases' => array(),
'dev_requirement' => false,
),
'ralouphie/getallheaders' => array(
'pretty_version' => '3.0.3',
'version' => '3.0.3.0',
@@ -1025,6 +1016,15 @@
'aliases' => array(),
'dev_requirement' => true,
),
'spatie/laravel-package-tools' => array(
'pretty_version' => '1.93.1',
'version' => '1.93.1.0',
'reference' => 'd5552849801f2642aea710557463234b59ef65eb',
'type' => 'library',
'install_path' => __DIR__ . '/../spatie/laravel-package-tools',
'aliases' => array(),
'dev_requirement' => true,
),
'spatie/once' => array(
'dev_requirement' => false,
'replaced' => array(
@@ -1040,15 +1040,6 @@
'aliases' => array(),
'dev_requirement' => true,
),
'swagger-api/swagger-ui' => array(
'pretty_version' => 'v5.32.6',
'version' => '5.32.6.0',
'reference' => 'dcdca62c8b64a0a54e4decd4e1a6c3c712fdcc60',
'type' => 'library',
'install_path' => __DIR__ . '/../swagger-api/swagger-ui',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/clock' => array(
'pretty_version' => 'v7.4.8',
'version' => '7.4.8.0',
@@ -1313,15 +1304,6 @@
0 => '2.3|3.0',
),
),
'symfony/type-info' => array(
'pretty_version' => 'v7.4.9',
'version' => '7.4.9.0',
'reference' => 'cafeedbf157b890e94ac5b83eaed85595106d5d6',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/type-info',
'aliases' => array(),
'dev_requirement' => false,
),
'symfony/uid' => array(
'pretty_version' => 'v7.4.9',
'version' => '7.4.9.0',
@@ -1347,7 +1329,7 @@
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/yaml',
'aliases' => array(),
'dev_requirement' => false,
'dev_requirement' => true,
),
'theseer/tokenizer' => array(
'pretty_version' => '1.3.1',
@@ -1385,14 +1367,5 @@
'aliases' => array(),
'dev_requirement' => false,
),
'zircote/swagger-php' => array(
'pretty_version' => '6.2.0',
'version' => '6.2.0.0',
'reference' => '060af3bb9c4cba6a5859aba2c51cd1c129479410',
'type' => 'library',
'install_path' => __DIR__ . '/../zircote/swagger-php',
'aliases' => array(),
'dev_requirement' => false,
),
),
);
@@ -1,273 +0,0 @@
---
name: write-tests
description: Write PHPUnit tests for the L5-Swagger Laravel package using Orchestra Testbench, following project conventions for mocking, config manipulation, and PHPUnit attributes
allowed-tools: Read, Edit, Write, Bash(vendor/bin/phpunit *), Bash(composer run-script phpunit), Bash(composer run-script analyse), Bash(grep *), Bash(find *), Bash(ls *), Bash(diff *), Bash(cat *)
---
# Write Tests for L5-Swagger
Generate PHPUnit tests for the L5-Swagger package following its established patterns.
## Context
- Test runner: !`composer run-script phpunit -- --version 2>/dev/null | head -1`
- Existing test files: !`ls tests/Unit/*.php 2>/dev/null | xargs -I{} basename {}`
- Source files: !`ls src/*.php src/**/*.php 2>/dev/null | grep -v vendor`
## Project Test Architecture
All tests extend `Tests\Unit\TestCase` which extends Orchestra Testbench's `OrchestraTestCase`. This gives every test a full Laravel application with the `L5SwaggerServiceProvider` registered.
### Base TestCase provides:
| Property / Method | Purpose |
|---|---|
| `$this->configFactory` | `ConfigFactory` instance resolved from the app container |
| `$this->generator` | `Generator` instance resolved from the app container |
| `$this->fileSystem` | PHPUnit mock of `Illuminate\Filesystem\Filesystem` (created via `createMock`) |
| `setAnnotationsPath()` | Points config to `tests/storage/annotations/OpenApi/` fixtures, enables `generate_always` and `generate_yaml_copy`, sets `L5_SWAGGER_CONST_HOST` constant, rebuilds the generator |
| `makeGeneratorWithMockedFileSystem()` | Injects `$this->fileSystem` mock into the generator via reflection |
| `setCustomDocsFileName($name, $type)` | Overrides docs filename in config for JSON or YAML |
| `crateJsonDocumentationFile()` | Creates a minimal `{}` JSON docs file |
| `createYamlDocumentationFile()` | Creates an empty YAML docs file |
| `jsonDocsFile()` | Returns absolute path to the JSON docs file (creates dir if needed) |
| `yamlDocsFile()` | Returns absolute path to the YAML docs file (creates dir if needed) |
| `copyAssets()` | Copies swagger-ui dist into testbench vendor dir (runs in setUp) |
| `deleteAssets()` | Removes the copied swagger-ui assets |
### tearDown cleanup
The base TestCase automatically deletes generated JSON/YAML docs files and the docs directory in `tearDown()`. You do NOT need to clean up generated files.
## Instructions
### Step 1: Determine what to test
Read the source file(s) the user wants tested. Identify:
- Public methods and their behavior
- Error/exception paths
- Config-driven behavior branches
- Interactions with the filesystem or external dependencies
### Step 2: Create or edit the test file
**File location**: `tests/Unit/{ClassName}Test.php`
**Required class-level attributes** (PHPUnit 11 attributes, not annotations):
```php
#[TestDox('Human readable class description')]
#[CoversClass(FullyQualifiedClassName::class)]
```
**Required test method conventions**:
- Method names: `testItDoesX` or `testCanDoX` (camelCase, descriptive)
- Visibility: `public function testXxx(): void`
- Add `@throws` docblock for expected exceptions
- Use `expectException()` and `expectExceptionMessage()` for exception tests
### Step 3: Follow these patterns based on what you're testing
#### Pattern A: Testing Generator behavior with mocked filesystem
Use when testing `Generator` methods that interact with the filesystem (directory creation, file writing, permission checks).
```php
public function testItThrowsExceptionIfSomethingFails(): void
{
$this->setAnnotationsPath();
$config = $this->configFactory->documentationConfig();
$docs = $config['paths']['docs'];
// Set up filesystem mock expectations
$this->fileSystem
->expects($this->once())
->method('exists')
->with($docs)
->willReturn(true);
// ... more mock setup ...
$this->expectException(L5SwaggerException::class);
$this->expectExceptionMessage('Expected error message');
// IMPORTANT: call makeGeneratorWithMockedFileSystem() AFTER mock setup
$this->makeGeneratorWithMockedFileSystem();
$this->generator->generateDocs();
}
```
#### Pattern B: Testing full generation pipeline (integration)
Use when testing that docs generate correctly with specific config.
```php
public function testCanGenerateWithSpecificConfig(): void
{
$this->setAnnotationsPath();
// Optionally override config
$cfg = config('l5-swagger.documentations.default');
$cfg['paths']['base'] = 'https://custom-server.url';
config(['l5-swagger' => [
'default' => 'default',
'documentations' => ['default' => $cfg],
'defaults' => config('l5-swagger.defaults'),
]]);
$this->generator->generateDocs();
$this->assertFileExists($this->jsonDocsFile());
// Verify via HTTP response
$this->get(route('l5-swagger.default.docs'))
->assertSee('expected content')
->assertStatus(200);
}
```
#### Pattern C: Testing routes and HTTP responses
Use when testing controller behavior, middleware, or route registration.
```php
public function testRouteReturnsExpectedResponse(): void
{
// For tests needing generated docs, call setAnnotationsPath() first
// For tests checking behavior without docs, don't call it
$this->get(route('l5-swagger.default.docs'))
->assertStatus(200)
->assertSee('expected')
->assertHeader('Content-Type', 'application/json');
}
```
#### Pattern D: Testing config merging
Use when testing `ConfigFactory` behavior.
```php
#[DataProvider('configDataProvider')]
public function testConfigMergesCorrectly(array $data, array $expected): void
{
config(['l5-swagger' => array_merge($data, [
'defaults' => [/* base defaults */],
])]);
$config = $this->configFactory->documentationConfig();
$this->assertSame($expected['key'], $config['key']);
}
public static function configDataProvider(): \Generator
{
yield 'descriptive case name' => [
'data' => [/* input */],
'expected' => [/* expected output */],
];
}
```
#### Pattern E: Mocking the Generator via GeneratorFactory
Use when testing controllers/routes that call `generateDocs()` and you want to control generator behavior without actual generation.
```php
public function testBehaviorWhenGenerationFails(): void
{
$mockGenerator = $this->createMock(Generator::class);
$mockGeneratorFactory = $this->createMock(GeneratorFactory::class);
$mockGeneratorFactory->method('make')->willReturn($mockGenerator);
app()->extend(GeneratorFactory::class, function () use ($mockGeneratorFactory) {
return $mockGeneratorFactory;
});
$mockGenerator->expects($this->once())
->method('generateDocs')
->willThrowException(new L5SwaggerException());
$this->get(route('l5-swagger.default.docs'))->assertNotFound();
}
```
### Step 4: Config manipulation pattern
When overriding config, always preserve the full structure:
```php
config(['l5-swagger' => [
'default' => 'default',
'documentations' => [
'default' => $cfg, // your modified config
],
'defaults' => config('l5-swagger.defaults'),
]]);
```
After changing config that affects the generator, call `$this->makeGenerator()` to rebuild it.
### Step 5: Run and verify with coverage gate
New tests must never decrease code coverage. Follow this sequence:
#### 5a. Capture baseline coverage BEFORE writing tests
```bash
vendor/bin/phpunit --coverage-text --only-summary-for-coverage-text 2>&1 | tee /tmp/l5-coverage-before.txt
```
Extract the baseline percentages:
```bash
grep -E 'Lines:|Methods:|Classes:' /tmp/l5-coverage-before.txt
```
Record both **Lines** and **Methods** percentages — these are the numbers that must not drop.
#### 5b. Run the new/modified tests in isolation
```bash
vendor/bin/phpunit tests/Unit/YourNewTest.php --testdox
```
#### 5c. Run the full suite with coverage AFTER adding tests
```bash
vendor/bin/phpunit --coverage-text --only-summary-for-coverage-text 2>&1 | tee /tmp/l5-coverage-after.txt
```
#### 5d. Compare coverage
```bash
diff /tmp/l5-coverage-before.txt /tmp/l5-coverage-after.txt
```
Verify:
- **Lines coverage**: must be >= baseline
- **Methods coverage**: must be >= baseline
If coverage decreased, identify the cause:
1. A new test file with `#[CoversClass]` pulled in a class that was previously uncovered — add tests for the uncovered methods
2. A test is covering code paths that were already covered but skipping others — add assertions for the missing branches
3. A new fixture or helper class landed under `src/` — it needs its own tests
**Do not proceed until coverage is equal to or higher than the baseline.**
#### 5e. Run static analysis
```bash
composer run-script analyse
```
## Important Rules
- **Coverage must not decrease.** Always capture baseline coverage before writing tests and verify it afterwards. If a `#[CoversClass]` attribute pulls in a class with uncovered methods, you must add tests for those methods too — not just remove the attribute. This is a hard gate: do not report the task as complete until coverage is verified equal or higher.
- Use PHP 8.2+ features: constructor property promotion, union types, named arguments, match expressions
- Use PHPUnit 11 **attributes** (`#[TestDox]`, `#[CoversClass]`, `#[DataProvider]`), NOT docblock annotations (`@testdox`, `@covers`, `@dataProvider`)
- Data providers must be `public static` methods returning `\Generator` (using `yield`)
- Fixture annotations live in `tests/storage/annotations/OpenApi/` — read existing ones before creating new fixtures
- The `$this->fileSystem` mock is created fresh via `#[Before]` attribute before each test — no shared mock state between tests
- Route names follow the pattern `l5-swagger.{documentation}.{type}` where type is `api`, `docs`, `asset`, or `oauth2_callback`
- The test environment sets `SWAGGER_VERSION=3.0` and `APP_KEY` via `phpunit.xml`
- StyleCI enforces Laravel preset — don't fight the code style
-83
View File
@@ -1,83 +0,0 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
L5-Swagger is a Laravel package that integrates swagger-php and swagger-ui into Laravel. It does NOT implement the OpenAPI spec — it wraps [swagger-php](https://github.com/zircote/swagger-php) for annotation scanning and [swagger-ui](https://github.com/swagger-api/swagger-ui) for the documentation frontend.
Supports multiple independent documentation sets, each with its own routes, paths, and settings via a two-level config: `defaults` (shared) merged with `documentations.{name}` (per-doc overrides). `ConfigFactory::mergeConfig()` recursively merges associative arrays.
## Development Commands
```bash
# Run all tests
composer run-script phpunit
# Run a single test file
vendor/bin/phpunit tests/Unit/GeneratorTest.php
# Run a single test method
vendor/bin/phpunit --filter testCanGenerateApiJsonFile
# Static analysis (PHPStan level 8)
composer run-script analyse
```
## Architecture
### Generation Pipeline
`GeneratorFactory::make(documentation)` → creates `Generator` with merged config → `Generator::generateDocs()` chains:
1. `prepareDirectory()` — ensure output dir exists/writable
2. `defineConstants()` — define PHP constants from config (usable in annotations)
3. `scanFilesForDocumentation()` — swagger-php scans PHP files using `ReflectionAnalyser` + `AttributeAnnotationFactory`
4. `populateServers()` — injects base path as a Server URL
5. `saveJson()` — writes JSON, then `SecurityDefinitions::generate()` injects security schemes
6. `makeYamlCopy()` — optional YAML conversion via `symfony/yaml`
Custom processors can be positioned relative to any existing processor via `scanOptions.processors` using `['class' => ..., 'after' => ...]` syntax. A `CustomGeneratorInterface` implementation can be provided via `scanOptions.generator_factory` to supply a pre-configured `OpenApi\Generator`.
### Service Container Bindings
`L5SwaggerServiceProvider` binds `Generator::class` as a factory — each resolution creates a new Generator via `GeneratorFactory::make()` using the `l5-swagger.default` documentation name. The `GenerateDocsCommand` is registered as a singleton under `command.l5-swagger.generate`.
### Routing
Routes are registered dynamically in `src/routes.php` by iterating all documentation sets. Each set gets up to 4 routes (api UI, docs JSON/YAML, assets, OAuth2 callback), all wrapped with the `Config` middleware that sets the active documentation context. Route names follow `l5-swagger.{documentation}.{type}`.
### Helpers
`swagger_ui_dist_path()` resolves swagger-ui asset paths with an allowlist of permitted files. `l5_swagger_asset()` generates versioned (cache-busted) URLs for those assets.
## Testing
Tests use Orchestra Testbench (`Tests\Unit\TestCase` extends `OrchestraTestCase`) for a full Laravel environment.
Key patterns:
- `$this->fileSystem` is a PHPUnit mock of `Filesystem`, injected into `Generator` via reflection in `makeGeneratorWithMockedFileSystem()`
- `setAnnotationsPath()` reconfigures the app to use `tests/storage/annotations/OpenApi/` fixtures and rebuilds the generator
- `setCustomDocsFileName()` overrides the output filename for JSON/YAML format tests
- `copyAssets()` copies swagger-ui dist into testbench's vendor directory in setUp; `tearDown` cleans up generated docs
- PHPUnit attributes: `#[TestDox('...')]`, `#[CoversClass(...)]`
Test fixtures live in `tests/storage/annotations/OpenApi/` with sample PHP attribute annotations.
## Code Style
- **StyleCI**: `preset: laravel` — enforced automatically
- **PHPStan**: Level 8, analyzes `src/` and `tests/Unit/`, ignores `argument.templateType`
- PHP 8.2+ required; uses constructor property promotion, union types, named arguments
- Supports Laravel 11.44+, 12.1+, and 13.0+
## Environment Variables
| Variable | Purpose |
|---|---|
| `L5_SWAGGER_GENERATE_ALWAYS` | Regenerate docs on every request (dev mode) |
| `L5_SWAGGER_GENERATE_YAML_COPY` | Also create YAML version |
| `L5_SWAGGER_CONST_HOST` | Default host constant for annotations |
| `L5_SWAGGER_OPEN_API_SPEC_VERSION` | `3.0.0` (default) or `3.1.0` |
| `L5_SWAGGER_UI_DARK_MODE` | Dark mode for Swagger UI |
| `SWAGGER_VERSION` | Used in tests to set OpenAPI version |
-65
View File
@@ -1,65 +0,0 @@
{
"name": "darkaonline/l5-swagger",
"description": "OpenApi or Swagger integration to Laravel",
"keywords": [
"laravel",
"swagger",
"api",
"OpenApi",
"specification",
"documentation",
"API",
"UI"
],
"license": "MIT",
"authors": [
{
"name": "Darius Matulionis",
"email": "darius@matulionis.lt"
}
],
"autoload": {
"psr-4": {
"L5Swagger\\": "src"
},
"files": [
"src/helpers.php"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests"
}
},
"require": {
"php": "^8.2",
"laravel/framework": "^13.0 || ^12.1 || ^11.44",
"zircote/swagger-php": "^6.0",
"swagger-api/swagger-ui": ">=5.18.3",
"symfony/yaml": "^5.0 || ^6.0 || ^7.0 || ^8.0",
"ext-json": "*"
},
"require-dev": {
"phpunit/phpunit": "^11.0",
"mockery/mockery": "1.*",
"orchestra/testbench": "^11.0 || ^10.0 || ^9.0 || ^8.0 || 7.* || ^6.15 || 5.*",
"php-coveralls/php-coveralls": "^2.0",
"phpstan/phpstan": "^2.1"
},
"extra": {
"laravel": {
"providers": [
"L5Swagger\\L5SwaggerServiceProvider"
],
"aliases": {
"L5Swagger": "L5Swagger\\L5SwaggerFacade"
}
}
},
"minimum-stability": "dev",
"prefer-stable": true,
"scripts": {
"phpunit": "vendor/bin/phpunit --testdox",
"analyse": "vendor/bin/phpstan analyse --memory-limit=256M"
}
}
-333
View File
@@ -1,333 +0,0 @@
<?php
return [
'default' => 'default',
'documentations' => [
'default' => [
'api' => [
'title' => 'L5 Swagger UI',
],
'routes' => [
/*
* Route for accessing api documentation interface
*/
'api' => 'api/documentation',
],
'paths' => [
/*
* Edit to include full URL in ui for assets
*/
'use_absolute_path' => env('L5_SWAGGER_USE_ABSOLUTE_PATH', true),
/*
* Edit to set path where swagger ui assets should be stored
*/
'swagger_ui_assets_path' => env('L5_SWAGGER_UI_ASSETS_PATH', 'vendor/swagger-api/swagger-ui/dist/'),
/*
* File name of the generated json documentation file
*/
'docs_json' => 'api-docs.json',
/*
* File name of the generated YAML documentation file
*/
'docs_yaml' => 'api-docs.yaml',
/*
* Set this to `json` or `yaml` to determine which documentation file to use in UI
*/
'format_to_use_for_docs' => env('L5_FORMAT_TO_USE_FOR_DOCS', 'json'),
/*
* Absolute paths to directory containing the swagger annotations are stored.
*/
'annotations' => [
base_path('app'),
],
],
],
],
'defaults' => [
'routes' => [
/*
* Route for accessing parsed swagger annotations.
*/
'docs' => 'docs',
/*
* Route for Oauth2 authentication callback.
*/
'oauth2_callback' => 'api/oauth2-callback',
/*
* Middleware allows to prevent unexpected access to API documentation
*/
'middleware' => [
'api' => [],
'asset' => [],
'docs' => [],
'oauth2_callback' => [],
],
/*
* Route Group options
*/
'group_options' => [],
],
'paths' => [
/*
* Absolute path to location where parsed annotations will be stored
*/
'docs' => storage_path('api-docs'),
/*
* Absolute path to directory where to export views
*/
'views' => base_path('resources/views/vendor/l5-swagger'),
/*
* Edit to set the api's base path
*/
'base' => env('L5_SWAGGER_BASE_PATH', null),
/*
* Absolute path to directories that should be excluded from scanning
* @deprecated Please use `scanOptions.exclude`
* `scanOptions.exclude` overwrites this
*/
'excludes' => [],
],
'scanOptions' => [
/**
* Optional CustomGeneratorInterface implementation that creates an OpenApi\Generator instance.
* Use this to provide a custom pre-configured generator.
* Accepts an instance or a class name (FQCN) implementing the interface.
*
* @see \L5Swagger\CustomGeneratorInterface
*/
'generator_factory' => null,
/**
* Configuration for default processors. Allows to pass processors configuration to swagger-php.
*
* @link https://zircote.github.io/swagger-php/reference/processors.html
*/
'default_processors_configuration' => [
/** Example */
/**
* 'operationId.hash' => true,
* 'pathFilter' => [
* 'tags' => [
* '/pets/',
* '/store/',
* ],
* ],.
*/
],
/**
* analyser: defaults to \OpenApi\StaticAnalyser .
*
* @see \OpenApi\scan
*/
'analyser' => null,
/**
* analysis: defaults to a new \OpenApi\Analysis .
*
* @see \OpenApi\scan
*/
'analysis' => null,
/**
* Custom processors.
*
* Each entry can be:
* - A class name or instance (inserted after BuildPaths by default)
* - An array with 'class' and 'after' keys for precise positioning:
* ['class' => MyProcessor::class, 'after' => SomeProcessor::class]
*
* @link https://github.com/zircote/swagger-php/tree/master/Examples/processors/schema-query-parameter
* @see \OpenApi\scan
*/
'processors' => [
// \App\SwaggerProcessors\SchemaQueryParameter::class,
// ['class' => \App\SwaggerProcessors\Custom::class, 'after' => \OpenApi\Processors\AugmentSchemas::class],
],
/**
* pattern: string $pattern File pattern(s) to scan (default: *.php) .
*
* @see \OpenApi\scan
*/
'pattern' => null,
/*
* Absolute path to directories that should be excluded from scanning
* @note This option overwrites `paths.excludes`
* @see \OpenApi\scan
*/
'exclude' => [],
/*
* Allows to generate specs either for OpenAPI 3.0.0 or OpenAPI 3.1.0.
* By default the spec will be in version 3.0.0
*/
'open_api_spec_version' => env('L5_SWAGGER_OPEN_API_SPEC_VERSION', \L5Swagger\Generator::OPEN_API_DEFAULT_SPEC_VERSION),
],
/*
* API security definitions. Will be generated into documentation file.
*/
'securityDefinitions' => [
'securitySchemes' => [
/*
* Examples of Security schemes
*/
/*
'api_key_security_example' => [ // Unique name of security
'type' => 'apiKey', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
'description' => 'A short description for security scheme',
'name' => 'api_key', // The name of the header or query parameter to be used.
'in' => 'header', // The location of the API key. Valid values are "query" or "header".
],
'oauth2_security_example' => [ // Unique name of security
'type' => 'oauth2', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
'description' => 'A short description for oauth2 security scheme.',
'flow' => 'implicit', // The flow used by the OAuth2 security scheme. Valid values are "implicit", "password", "application" or "accessCode".
'authorizationUrl' => 'http://example.com/auth', // The authorization URL to be used for (implicit/accessCode)
//'tokenUrl' => 'http://example.com/auth' // The authorization URL to be used for (password/application/accessCode)
'scopes' => [
'read:projects' => 'read your projects',
'write:projects' => 'modify projects in your account',
]
],
*/
/* Open API 3.0 support
'passport' => [ // Unique name of security
'type' => 'oauth2', // The type of the security scheme. Valid values are "basic", "apiKey" or "oauth2".
'description' => 'Laravel passport oauth2 security.',
'in' => 'header',
'scheme' => 'https',
'flows' => [
"password" => [
"authorizationUrl" => config('app.url') . '/oauth/authorize',
"tokenUrl" => config('app.url') . '/oauth/token',
"refreshUrl" => config('app.url') . '/token/refresh',
"scopes" => []
],
],
],
'sanctum' => [ // Unique name of security
'type' => 'apiKey', // Valid values are "basic", "apiKey" or "oauth2".
'description' => 'Enter token in format (Bearer <token>)',
'name' => 'Authorization', // The name of the header or query parameter to be used.
'in' => 'header', // The location of the API key. Valid values are "query" or "header".
],
*/
],
'security' => [
/*
* Examples of Securities
*/
[
/*
'oauth2_security_example' => [
'read',
'write'
],
'passport' => []
*/
],
],
],
/*
* Set this to `true` in development mode so that docs would be regenerated on each request
* Set this to `false` to disable swagger generation on production
*/
'generate_always' => env('L5_SWAGGER_GENERATE_ALWAYS', false),
/*
* Set this to `true` to generate a copy of documentation in yaml format
*/
'generate_yaml_copy' => env('L5_SWAGGER_GENERATE_YAML_COPY', false),
/*
* Edit to trust the proxy's ip address - needed for AWS Load Balancer
* string[]
*/
'proxy' => false,
/*
* Configs plugin allows to fetch external configs instead of passing them to SwaggerUIBundle.
* See more at: https://github.com/swagger-api/swagger-ui#configs-plugin
*/
'additional_config_url' => null,
/*
* Apply a sort to the operation list of each API. It can be 'alpha' (sort by paths alphanumerically),
* 'method' (sort by HTTP method).
* Default is the order returned by the server unchanged.
*/
'operations_sort' => env('L5_SWAGGER_OPERATIONS_SORT', null),
/*
* Pass the validatorUrl parameter to SwaggerUi init on the JS side.
* A null value here disables validation.
*/
'validator_url' => null,
/*
* Swagger UI configuration parameters
*/
'ui' => [
'display' => [
'dark_mode' => env('L5_SWAGGER_UI_DARK_MODE', false),
/*
* Controls the default expansion setting for the operations and tags. It can be :
* 'list' (expands only the tags),
* 'full' (expands the tags and operations),
* 'none' (expands nothing).
*/
'doc_expansion' => env('L5_SWAGGER_UI_DOC_EXPANSION', 'none'),
/**
* If set, enables filtering. The top bar will show an edit box that
* you can use to filter the tagged operations that are shown. Can be
* Boolean to enable or disable, or a string, in which case filtering
* will be enabled using that string as the filter expression. Filtering
* is case-sensitive matching the filter expression anywhere inside
* the tag.
*/
'filter' => env('L5_SWAGGER_UI_FILTERS', true), // true | false
],
'authorization' => [
/*
* If set to true, it persists authorization data, and it would not be lost on browser close/refresh
*/
'persist_authorization' => env('L5_SWAGGER_UI_PERSIST_AUTHORIZATION', false),
'oauth2' => [
/*
* If set to true, adds PKCE to AuthorizationCodeGrant flow
*/
'use_pkce_with_authorization_code_grant' => false,
],
],
],
/*
* Constants which can be used in annotations
*/
'constants' => [
'L5_SWAGGER_CONST_HOST' => env('L5_SWAGGER_CONST_HOST', 'http://my-default-host.com'),
],
],
];
-7
View File
@@ -1,7 +0,0 @@
parameters:
level: 8
paths:
- src
- tests/Unit
ignoreErrors:
- identifier: argument.templateType
@@ -1,174 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ $documentationTitle }}</title>
<link rel="stylesheet" type="text/css" href="{{ l5_swagger_asset($documentation, 'swagger-ui.css') }}">
<link rel="icon" type="image/png" href="{{ l5_swagger_asset($documentation, 'favicon-32x32.png') }}" sizes="32x32"/>
<link rel="icon" type="image/png" href="{{ l5_swagger_asset($documentation, 'favicon-16x16.png') }}" sizes="16x16"/>
<style>
html
{
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}
*,
*:before,
*:after
{
box-sizing: inherit;
}
body {
margin:0;
background: #fafafa;
}
</style>
@if(config('l5-swagger.defaults.ui.display.dark_mode'))
<style>
body#dark-mode,
#dark-mode .scheme-container {
background: #1b1b1b;
}
#dark-mode .scheme-container,
#dark-mode .opblock .opblock-section-header{
box-shadow: 0 1px 2px 0 rgba(255, 255, 255, 0.15);
}
#dark-mode .operation-filter-input,
#dark-mode .dialog-ux .modal-ux,
#dark-mode input[type=email],
#dark-mode input[type=file],
#dark-mode input[type=password],
#dark-mode input[type=search],
#dark-mode input[type=text],
#dark-mode textarea{
background: #343434;
color: #e7e7e7;
}
#dark-mode .title,
#dark-mode li,
#dark-mode p,
#dark-mode table,
#dark-mode label,
#dark-mode .opblock-tag,
#dark-mode .opblock .opblock-summary-operation-id,
#dark-mode .opblock .opblock-summary-path,
#dark-mode .opblock .opblock-summary-path__deprecated,
#dark-mode h1,
#dark-mode h2,
#dark-mode h3,
#dark-mode h4,
#dark-mode h5,
#dark-mode .btn,
#dark-mode .tab li,
#dark-mode .parameter__name,
#dark-mode .parameter__type,
#dark-mode .prop-format,
#dark-mode .loading-container .loading:after{
color: #e7e7e7;
}
#dark-mode .opblock-description-wrapper p,
#dark-mode .opblock-external-docs-wrapper p,
#dark-mode .opblock-title_normal p,
#dark-mode .response-col_status,
#dark-mode table thead tr td,
#dark-mode table thead tr th,
#dark-mode .response-col_links,
#dark-mode .swagger-ui{
color: wheat;
}
#dark-mode .parameter__extension,
#dark-mode .parameter__in,
#dark-mode .model-title{
color: #949494;
}
#dark-mode table thead tr td,
#dark-mode table thead tr th{
border-color: rgba(120,120,120,.2);
}
#dark-mode .opblock .opblock-section-header{
background: transparent;
}
#dark-mode .opblock.opblock-post{
background: rgba(73,204,144,.25);
}
#dark-mode .opblock.opblock-get{
background: rgba(97,175,254,.25);
}
#dark-mode .opblock.opblock-put{
background: rgba(252,161,48,.25);
}
#dark-mode .opblock.opblock-delete{
background: rgba(249,62,62,.25);
}
#dark-mode .loading-container .loading:before{
border-color: rgba(255,255,255,10%);
border-top-color: rgba(255,255,255,.6);
}
#dark-mode svg:not(:root){
fill: #e7e7e7;
}
#dark-mode .opblock-summary-description {
color: #fafafa;
}
</style>
@endif
</head>
<body @if(config('l5-swagger.defaults.ui.display.dark_mode')) id="dark-mode" @endif>
<div id="swagger-ui"></div>
<script src="{{ l5_swagger_asset($documentation, 'swagger-ui-bundle.js') }}"></script>
<script src="{{ l5_swagger_asset($documentation, 'swagger-ui-standalone-preset.js') }}"></script>
<script>
window.onload = function() {
const urls = [];
@foreach($urlsToDocs as $title => $url)
urls.push({name: "{{ $title }}", url: "{{ $url }}"});
@endforeach
// Build a system
const ui = SwaggerUIBundle({
dom_id: '#swagger-ui',
urls: urls,
"urls.primaryName": "{{ $documentationTitle }}",
operationsSorter: {!! isset($operationsSorter) ? '"' . $operationsSorter . '"' : 'null' !!},
configUrl: {!! isset($configUrl) ? '"' . $configUrl . '"' : 'null' !!},
validatorUrl: {!! isset($validatorUrl) ? '"' . $validatorUrl . '"' : 'null' !!},
oauth2RedirectUrl: "{{ route('l5-swagger.'.$documentation.'.oauth2_callback', [], $useAbsolutePath) }}",
requestInterceptor: function(request) {
request.headers['X-CSRF-TOKEN'] = '{{ csrf_token() }}';
return request;
},
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout",
docExpansion : "{!! config('l5-swagger.defaults.ui.display.doc_expansion', 'none') !!}",
deepLinking: true,
filter: {!! config('l5-swagger.defaults.ui.display.filter') ? 'true' : 'false' !!},
persistAuthorization: "{!! config('l5-swagger.defaults.ui.authorization.persist_authorization') ? 'true' : 'false' !!}",
})
window.ui = ui
@if(in_array('oauth2', array_column(config('l5-swagger.defaults.securityDefinitions.securitySchemes'), 'type')))
ui.initOAuth({
usePkceWithAuthorizationCodeGrant: "{!! (bool)config('l5-swagger.defaults.ui.authorization.oauth2.use_pkce_with_authorization_code_grant') !!}"
})
@endif
}
</script>
</body>
</html>
-71
View File
@@ -1,71 +0,0 @@
<?php
namespace L5Swagger;
use L5Swagger\Exceptions\L5SwaggerException;
class ConfigFactory
{
/**
* Retrieves and merges the configuration for the specified documentation.
*
* @param string|null $documentation The name of the documentation configuration to retrieve.
* If null, the default documentation configuration is used.
* @return array<string, mixed> The merged configuration for the specified documentation.
*
* @throws L5SwaggerException If the specified documentation configuration is not found.
*/
public function documentationConfig(?string $documentation = null): array
{
if ($documentation === null) {
$documentation = config('l5-swagger.default');
}
$defaults = config('l5-swagger.defaults', []);
$documentations = config('l5-swagger.documentations', []);
if (! isset($documentations[$documentation])) {
throw new L5SwaggerException('Documentation config not found');
}
return $this->mergeConfig($defaults, $documentations[$documentation]);
}
/**
* Merges two configuration arrays recursively, with the values from the second array
* overriding those in the first array when keys overlap.
*
* @param array<string, mixed> $defaults The default configuration array.
* @param array<string, mixed> $config The configuration array to merge into the defaults.
* @return array<string, mixed> The merged configuration array.
*/
private function mergeConfig(array $defaults, array $config): array
{
$merged = $defaults;
foreach ($config as $key => &$value) {
if (isset($defaults[$key])
&& $this->isAssociativeArray($defaults[$key])
&& $this->isAssociativeArray($value)
) {
$merged[$key] = $this->mergeConfig($defaults[$key], $value);
continue;
}
$merged[$key] = $value;
}
return $merged;
}
/**
* Determines whether a given value is an associative array.
*
* @param mixed $value The value to be checked.
* @return bool True if the value is an associative array, false otherwise.
*/
private function isAssociativeArray(mixed $value): bool
{
return is_array($value) && count(array_filter(array_keys($value), 'is_string')) > 0;
}
}
@@ -1,75 +0,0 @@
<?php
namespace L5Swagger\Console;
use Illuminate\Console\Command;
use L5Swagger\Exceptions\L5SwaggerException;
use L5Swagger\GeneratorFactory;
class GenerateDocsCommand extends Command
{
public function __construct()
{
parent::__construct();
}
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'l5-swagger:generate {documentation?} {--all}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Regenerate docs';
/**
* @param GeneratorFactory $generatorFactory
*
* @throws L5SwaggerException
*/
public function handle(GeneratorFactory $generatorFactory): void
{
$all = $this->option('all');
if ($all) {
/** @var array<string> $documentations */
$documentations = array_keys(config('l5-swagger.documentations', []));
foreach ($documentations as $documentation) {
$this->generateDocumentation($generatorFactory, $documentation);
}
return;
}
$documentation = $this->argument('documentation');
if (! $documentation) {
$documentation = config('l5-swagger.default');
}
$this->generateDocumentation($generatorFactory, $documentation);
}
/**
* Generates documentation using the specified generator factory.
*
* @param GeneratorFactory $generatorFactory The factory used to create the documentation generator.
* @param string $documentation The name or identifier of the documentation to be generated.
* @return void
*
* @throws L5SwaggerException
*/
private function generateDocumentation(GeneratorFactory $generatorFactory, string $documentation): void
{
$this->info('Regenerating docs '.$documentation);
$generator = $generatorFactory->make($documentation);
$generator->generateDocs();
}
}
@@ -1,10 +0,0 @@
<?php
namespace L5Swagger;
use OpenApi\Generator as OpenApiGenerator;
interface CustomGeneratorInterface
{
public function create(): OpenApiGenerator;
}
@@ -1,7 +0,0 @@
<?php
namespace L5Swagger\Exceptions;
class L5SwaggerException extends \Exception
{
}
-359
View File
@@ -1,359 +0,0 @@
<?php
namespace L5Swagger;
use Exception;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Support\Arr;
use L5Swagger\Exceptions\L5SwaggerException;
use OpenApi\Annotations\OpenApi;
use OpenApi\Annotations\Server;
use OpenApi\Generator as OpenApiGenerator;
use OpenApi\OpenApiException;
use OpenApi\Pipeline;
use OpenApi\SourceFinder;
use Symfony\Component\Finder\Finder;
use Symfony\Component\Yaml\Dumper as YamlDumper;
use Symfony\Component\Yaml\Yaml;
class Generator
{
public const OPEN_API_DEFAULT_SPEC_VERSION = '3.0.0';
protected const SCAN_OPTION_PROCESSORS = 'processors';
protected const SCAN_OPTION_PATTERN = 'pattern';
protected const SCAN_OPTION_ANALYSER = 'analyser';
protected const SCAN_OPTION_ANALYSIS = 'analysis';
protected const SCAN_OPTION_EXCLUDE = 'exclude';
protected const AVAILABLE_SCAN_OPTIONS = [
self::SCAN_OPTION_PATTERN,
self::SCAN_OPTION_ANALYSER,
self::SCAN_OPTION_ANALYSIS,
self::SCAN_OPTION_EXCLUDE,
];
/**
* @var string|array<string>
*/
protected string|array $annotationsDir;
protected string $docDir;
protected string $docsFile;
protected string $yamlDocsFile;
/**
* @var array<string>
*/
protected array $excludedDirs;
/**
* @var array<string>
*/
protected array $constants;
protected ?OpenApi $openApi;
protected bool $yamlCopyRequired;
protected ?string $basePath;
protected SecurityDefinitions $security;
/**
* @var array<string,mixed>
*/
protected array $scanOptions;
protected Filesystem $fileSystem;
/**
* Constructor to initialize documentation generation settings and dependencies.
*
* @param array<string,mixed> $paths Array of paths including annotations, docs, excluded directories, and base path.
* @param array<string> $constants Array of constants to be used during documentation generation.
* @param bool $yamlCopyRequired Determines if a YAML copy of the documentation is required.
* @param SecurityDefinitions $security Security definitions for the documentation.
* @param array<string> $scanOptions Additional options for scanning files or directories.
* @param Filesystem|null $filesystem Filesystem instance, optional, defaults to a new Filesystem.
* @return void
*/
public function __construct(
array $paths,
array $constants,
bool $yamlCopyRequired,
SecurityDefinitions $security,
array $scanOptions,
?Filesystem $filesystem = null
) {
$this->annotationsDir = $paths['annotations'];
$this->docDir = $paths['docs'];
$this->docsFile = $this->docDir.DIRECTORY_SEPARATOR.($paths['docs_json'] ?? 'api-docs.json');
$this->yamlDocsFile = $this->docDir.DIRECTORY_SEPARATOR.($paths['docs_yaml'] ?? 'api-docs.yaml');
$this->excludedDirs = $paths['excludes'];
$this->basePath = $paths['base'];
$this->constants = $constants;
$this->yamlCopyRequired = $yamlCopyRequired;
$this->security = $security;
$this->scanOptions = $scanOptions;
$this->fileSystem = $filesystem ?? new Filesystem();
}
/**
* Generate necessary documentation files by scanning and processing the required data.
*
* @return void
*
* @throws L5SwaggerException
* @throws Exception
*/
public function generateDocs(): void
{
$this->prepareDirectory()
->defineConstants()
->scanFilesForDocumentation()
->populateServers()
->saveJson()
->makeYamlCopy();
}
/**
* Prepares the directory for storing documentation by ensuring it exists and is writable.
*
* @return self
*
* @throws L5SwaggerException If the directory is not writable or cannot be created.
*/
protected function prepareDirectory(): self
{
if ($this->fileSystem->exists($this->docDir) && ! $this->fileSystem->isWritable($this->docDir)) {
throw new L5SwaggerException('Documentation storage directory is not writable');
}
if (! $this->fileSystem->exists($this->docDir)) {
$this->fileSystem->makeDirectory($this->docDir);
}
if (! $this->fileSystem->exists($this->docDir)) {
throw new L5SwaggerException('Documentation storage directory could not be created');
}
return $this;
}
/**
* Define and set constants if not already defined.
*
* @return self
*/
protected function defineConstants(): self
{
if (! empty($this->constants)) {
foreach ($this->constants as $key => $value) {
defined($key) || define($key, $value);
}
}
return $this;
}
/**
* Scans files to generate documentation.
*
* @return self
*/
protected function scanFilesForDocumentation(): self
{
$generator = $this->createOpenApiGenerator();
$finder = $this->createScanFinder();
// Analysis.
$analysis = Arr::get($this->scanOptions, self::SCAN_OPTION_ANALYSIS);
$this->openApi = $generator->generate($finder, $analysis);
return $this;
}
/**
* Create and configure an instance of OpenApiGenerator.
*
* @return OpenApiGenerator
*/
protected function createOpenApiGenerator(): OpenApiGenerator
{
$factory = $this->scanOptions['generator_factory'] ?? null;
if (is_string($factory) && is_subclass_of($factory, CustomGeneratorInterface::class)) {
$factory = new $factory();
}
$generator = $factory instanceof CustomGeneratorInterface
? $factory->create()
: new OpenApiGenerator();
if (! empty($this->scanOptions['default_processors_configuration'])
&& is_array($this->scanOptions['default_processors_configuration'])
) {
$generator->setConfig($this->scanOptions['default_processors_configuration']);
}
$generator->setVersion(
$this->scanOptions['open_api_spec_version'] ?? self::OPEN_API_DEFAULT_SPEC_VERSION
);
// Processors.
$this->setProcessors($generator);
// Analyser.
$this->setAnalyser($generator);
return $generator;
}
/**
* Set the processors for the OpenAPI generator.
*
* @param OpenApiGenerator $generator The OpenAPI generator instance to configure.
* @return void
*/
protected function setProcessors(OpenApiGenerator $generator): void
{
$processorConfigs = Arr::get($this->scanOptions, self::SCAN_OPTION_PROCESSORS, []);
if (empty($processorConfigs)) {
return;
}
$normalizedConfigs = [];
foreach ($processorConfigs as $config) {
$normalizedConfigs[] = is_array($config)
? $config
: ['class' => $config, 'after' => \OpenApi\Processors\BuildPaths::class];
}
$newPipeLine = [];
$generator->getProcessorPipeline()->walk(
function (callable $pipe) use ($normalizedConfigs, &$newPipeLine) {
$newPipeLine[] = $pipe;
foreach ($normalizedConfigs as $entry) {
$after = $entry['after'];
if ($pipe instanceof $after) {
$processor = $entry['class'];
$newPipeLine[] = is_string($processor) ? new $processor() : $processor;
}
}
}
);
$generator->setProcessorPipeline(new Pipeline($newPipeLine));
}
/**
* Set the analyzer for the OpenAPI generator based on scan options.
*
* @param OpenApiGenerator $generator The OpenAPI generator instance.
* @return void
*/
protected function setAnalyser(OpenApiGenerator $generator): void
{
$analyser = Arr::get($this->scanOptions, self::SCAN_OPTION_ANALYSER);
if (! empty($analyser)) {
$generator->setAnalyser($analyser);
return;
}
// Use AttributeAnnotationFactory for PHP 8.1+ native attributes
$generator->setAnalyser(new \OpenApi\Analysers\ReflectionAnalyser([
new \OpenApi\Analysers\AttributeAnnotationFactory(),
]));
}
/**
* Create and return a Finder instance configured for scanning directories.
*
* @return Finder
*/
protected function createScanFinder(): Finder
{
$pattern = Arr::get($this->scanOptions, self::SCAN_OPTION_PATTERN) ?: '*.php';
$exclude = Arr::get($this->scanOptions, self::SCAN_OPTION_EXCLUDE);
$exclude = ! empty($exclude) ? $exclude : $this->excludedDirs;
return new SourceFinder($this->annotationsDir, $exclude, $pattern);
}
/**
* Populate the servers list in the OpenAPI configuration using the base path.
*
* @return self
*/
protected function populateServers(): self
{
if ($this->basePath !== null && $this->openApi !== null) {
if (
$this->openApi->servers === OpenApiGenerator::UNDEFINED // @phpstan-ignore-line
|| is_array($this->openApi->servers) === false // @phpstan-ignore-line
) {
$this->openApi->servers = [];
}
$this->openApi->servers[] = new Server(['url' => $this->basePath]);
}
return $this;
}
/**
* Saves the JSON data and applies security measures to the file.
*
* @return self
*
* @throws FileNotFoundException
* @throws OpenApiException
*/
protected function saveJson(): self
{
if ($this->openApi !== null) {
$this->openApi->saveAs($this->docsFile);
}
$this->security->generate($this->docsFile);
return $this;
}
/**
* Creates a YAML copy of the OpenAPI documentation if required.
*
* This method converts the JSON documentation file to YAML format and saves it
* to the specified file path when the YAML copy requirement is enabled.
*
* @return void
*
* @throws FileNotFoundException
*/
protected function makeYamlCopy(): void
{
if ($this->yamlCopyRequired) {
$yamlDocs = (new YamlDumper(2))->dump(
json_decode($this->fileSystem->get($this->docsFile), true),
20,
0,
Yaml::DUMP_OBJECT_AS_MAP ^ Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE
);
$this->fileSystem->put(
$this->yamlDocsFile,
$yamlDocs
);
}
}
}
-43
View File
@@ -1,43 +0,0 @@
<?php
namespace L5Swagger;
use L5Swagger\Exceptions\L5SwaggerException;
class GeneratorFactory
{
public function __construct(private readonly ConfigFactory $configFactory)
{
}
/**
* Creates and returns a new Generator instance based on the provided documentation configuration.
*
* @param string $documentation The name or identifier of the documentation to generate.
* @return Generator The configured Generator instance.
*
* @throws L5SwaggerException
*/
public function make(string $documentation): Generator
{
$config = $this->configFactory->documentationConfig($documentation);
$paths = $config['paths'];
$scanOptions = $config['scanOptions'] ?? [];
$constants = $config['constants'] ?? [];
$yamlCopyRequired = $config['generate_yaml_copy'] ?? false;
$secSchemesConfig = $config['securityDefinitions']['securitySchemes'] ?? [];
$secConfig = $config['securityDefinitions']['security'] ?? [];
$security = new SecurityDefinitions($secSchemesConfig, $secConfig);
return new Generator(
$paths,
$constants,
$yamlCopyRequired,
$security,
$scanOptions
);
}
}
@@ -1,50 +0,0 @@
<?php
namespace L5Swagger\Http\Controllers;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller as BaseController;
use L5Swagger\Exceptions\L5SwaggerException;
/**
* Handles requests for serving Swagger UI assets.
*/
class SwaggerAssetController extends BaseController
{
/**
* Serves a specific documentation asset for the Swagger UI interface.
*
* @param Request $request The incoming HTTP request, which includes parameters to locate the requested asset.
* @return Response The HTTP response containing the requested asset content
* or a 404 error if the asset is not found.
*
* @throws FileNotFoundException
*/
public function index(Request $request): Response
{
$fileSystem = new Filesystem();
$documentation = $request->offsetGet('documentation');
$asset = $request->offsetGet('asset');
try {
$path = swagger_ui_dist_path($documentation, $asset);
return (new Response(
$fileSystem->get($path),
200,
[
'Content-Type' => (isset(pathinfo($asset)['extension']) && pathinfo($asset)['extension'] === 'css')
? 'text/css'
: 'application/javascript',
]
))->setSharedMaxAge(31536000)
->setMaxAge(31536000)
->setExpires(new \DateTime('+1 year'));
} catch (L5SwaggerException $exception) {
return abort(404, $exception->getMessage());
}
}
}
@@ -1,201 +0,0 @@
<?php
namespace L5Swagger\Http\Controllers;
use Exception;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Request as RequestFacade;
use L5Swagger\ConfigFactory;
use L5Swagger\Exceptions\L5SwaggerException;
use L5Swagger\GeneratorFactory;
class SwaggerController extends BaseController
{
public function __construct(
private readonly GeneratorFactory $generatorFactory,
private readonly ConfigFactory $configFactory
) {
}
/**
* Handles requests for API documentation and returns the corresponding file content.
*
* @param Request $request The HTTP request containing parameters such as documentation and configuration.
* @return Response The HTTP response containing the documentation file content with appropriate headers.
*
* @throws FileNotFoundException If the documentation file does not exist.
* @throws Exception If the documentation generation process fails.
*/
public function docs(Request $request): Response
{
$fileSystem = new Filesystem();
$documentation = $request->offsetGet('documentation');
$config = $request->offsetGet('config');
$formatToUseForDocs = $config['paths']['format_to_use_for_docs'] ?? 'json';
$yamlFormat = ($formatToUseForDocs === 'yaml');
$filePath = sprintf(
'%s/%s',
$config['paths']['docs'],
$yamlFormat ? $config['paths']['docs_yaml'] : $config['paths']['docs_json']
);
if ($config['generate_always']) {
$generator = $this->generatorFactory->make($documentation);
try {
$generator->generateDocs();
} catch (Exception $e) {
Log::error($e);
abort(
404,
sprintf(
'Unable to generate documentation file to: "%s". Please make sure directory is writable. Error: %s',
$filePath,
$e->getMessage()
)
);
}
}
if (! $fileSystem->exists($filePath)) {
abort(404, sprintf('Unable to locate documentation file at: "%s"', $filePath));
}
$content = $fileSystem->get($filePath);
if ($yamlFormat) {
return response($content, 200, [
'Content-Type' => 'application/yaml',
'Content-Disposition' => 'inline',
]);
}
return response($content, 200, [
'Content-Type' => 'application/json',
]);
}
/**
* Handles the API request and renders the Swagger documentation view.
*
* @param Request $request The HTTP request containing necessary parameters such as documentation and configuration details.
* @return Response The HTTP response rendering the Swagger documentation view.
*/
public function api(Request $request): Response
{
$documentation = $request->offsetGet('documentation');
$config = $request->offsetGet('config');
$proxy = $config['proxy'];
if ($proxy) {
if (! is_array($proxy)) {
$proxy = [$proxy];
}
Request::setTrustedProxies(
$proxy,
Request::HEADER_X_FORWARDED_FOR |
Request::HEADER_X_FORWARDED_HOST |
Request::HEADER_X_FORWARDED_PORT |
Request::HEADER_X_FORWARDED_PROTO |
Request::HEADER_X_FORWARDED_AWS_ELB
);
}
$urlToDocs = $this->generateDocumentationFileURL($documentation, $config);
$urlsToDocs = $this->getAllDocumentationUrls();
$useAbsolutePath = config('l5-swagger.documentations.'.$documentation.'.paths.use_absolute_path', true);
// Need the / at the end to avoid CORS errors on Homestead systems.
return response(
view('l5-swagger::index', [
'documentation' => $documentation,
'documentationTitle' => $config['api']['title'] ?? $documentation,
'secure' => RequestFacade::secure(),
'urlToDocs' => $urlToDocs, // Is not used in the view, but still passed for backwards compatibility
'urlsToDocs' => $urlsToDocs,
'operationsSorter' => $config['operations_sort'],
'configUrl' => $config['additional_config_url'],
'validatorUrl' => $config['validator_url'],
'useAbsolutePath' => $useAbsolutePath,
]),
200
);
}
/**
* Handles the OAuth2 callback and retrieves the required file for the redirect.
*
* @param Request $request The HTTP request containing necessary parameters.
* @return string The content of the OAuth2 redirect file.
*
* @throws FileNotFoundException
* @throws L5SwaggerException
*/
public function oauth2Callback(Request $request): string
{
$fileSystem = new Filesystem();
$documentation = $request->offsetGet('documentation');
return $fileSystem->get(swagger_ui_dist_path($documentation, 'oauth2-redirect.html'));
}
/**
* Generate the URL for accessing the documentation file based on the provided configuration.
*
* @param string $documentation The name of the documentation instance.
* @param array<string,mixed> $config The configuration settings for generating the documentation URL.
* @return string The generated URL for the documentation file.
*/
protected function generateDocumentationFileURL(string $documentation, array $config): string
{
$fileUsedForDocs = $config['paths']['docs_json'] ?? 'api-docs.json';
if (! empty($config['paths']['format_to_use_for_docs'])
&& $config['paths']['format_to_use_for_docs'] === 'yaml'
&& $config['paths']['docs_yaml']
) {
$fileUsedForDocs = $config['paths']['docs_yaml'];
}
$useAbsolutePath = config('l5-swagger.documentations.'.$documentation.'.paths.use_absolute_path', true);
return route(
'l5-swagger.'.$documentation.'.docs',
$fileUsedForDocs,
$useAbsolutePath
);
}
/**
* Retrieves all available documentation URLs with their corresponding titles.
*
* @return array<string,string> An associative array where the keys are documentation titles
* and the values are the corresponding URLs.
*
* @throws L5SwaggerException
*/
protected function getAllDocumentationUrls(): array
{
/** @var array<string> $documentations */
$documentations = array_keys(config('l5-swagger.documentations', []));
$urlsToDocs = [];
foreach ($documentations as $documentationName) {
$config = $this->configFactory->documentationConfig($documentationName);
$title = $config['api']['title'] ?? $documentationName;
$urlsToDocs[$title] = $this->generateDocumentationFileURL($documentationName, $config);
}
return $urlsToDocs;
}
}
@@ -1,38 +0,0 @@
<?php
namespace L5Swagger\Http\Middleware;
use Closure;
use L5Swagger\ConfigFactory;
use L5Swagger\Exceptions\L5SwaggerException;
class Config
{
public function __construct(
private readonly ConfigFactory $configFactory
) {
}
/**
* Handles the incoming request by extracting documentation configuration and setting it on the request.
*
* @param mixed $request The incoming HTTP request.
* @param Closure $next The next middleware in the pipeline.
* @return mixed The processed HTTP response after passing through the next middleware.
*
* @throws L5SwaggerException
*/
public function handle(mixed $request, Closure $next): mixed
{
$actions = $request->route()->getAction();
$documentation = $actions['l5-swagger.documentation'];
$config = $this->configFactory->documentationConfig($documentation);
$request->offsetSet('documentation', $documentation);
$request->offsetSet('config', $config);
return $next($request);
}
}
-20
View File
@@ -1,20 +0,0 @@
<?php
namespace L5Swagger;
use Illuminate\Support\Facades\Facade;
class L5SwaggerFacade extends Facade
{
/**
* Get the registered name of the component being accessed through the facade.
*
* @codeCoverageIgnore
*
* @return string The name or class of the underlying component.
*/
protected static function getFacadeAccessor(): string
{
return Generator::class;
}
}
@@ -1,75 +0,0 @@
<?php
namespace L5Swagger;
use Illuminate\Support\ServiceProvider;
use L5Swagger\Console\GenerateDocsCommand;
class L5SwaggerServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application events.
*
* @return void
*/
public function boot(): void
{
$viewPath = __DIR__.'/../resources/views';
$this->loadViewsFrom($viewPath, 'l5-swagger');
// Publish a config file
$configPath = __DIR__.'/../config/l5-swagger.php';
$this->publishes([
$configPath => config_path('l5-swagger.php'),
], 'config');
//Publish views
$this->publishes([
__DIR__.'/../resources/views' => config('l5-swagger.defaults.paths.views'),
], 'views');
//Include routes
$this->loadRoutesFrom(__DIR__.'/routes.php');
//Register commands
$this->commands([GenerateDocsCommand::class]);
}
/**
* Register the service provider.
*
* @return void
*/
public function register(): void
{
$configPath = __DIR__.'/../config/l5-swagger.php';
$this->mergeConfigFrom($configPath, 'l5-swagger');
$this->app->singleton('command.l5-swagger.generate', function ($app) {
return $app->make(GenerateDocsCommand::class);
});
$this->app->bind(Generator::class, function ($app) {
$documentation = config('l5-swagger.default');
/** @var GeneratorFactory $factory */
$factory = $app->make(GeneratorFactory::class);
return $factory->make($documentation);
});
}
/**
* Get the services provided by the provider.
*
* @codeCoverageIgnore
*
* @return array<string>
*/
public function provides(): array
{
return [
'command.l5-swagger.generate',
];
}
}
@@ -1,117 +0,0 @@
<?php
namespace L5Swagger;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Support\Collection;
class SecurityDefinitions
{
/**
* @param array<string,mixed> $schemasConfig
* @param array<string,mixed> $securityConfig
*/
public function __construct(
private readonly array $schemasConfig = [],
private readonly array $securityConfig = []
) {
}
/**
* Reads in the l5-swagger configuration and appends security settings to documentation.
*
* @param string $filename The path to the generated json documentation
*
* @throws FileNotFoundException
*/
public function generate(string $filename): void
{
$fileSystem = new Filesystem();
$documentation = collect(
json_decode($fileSystem->get($filename))
);
if (! empty($this->schemasConfig)) {
$documentation = $this->injectSecuritySchemes($documentation, $this->schemasConfig);
}
if (! empty($this->securityConfig)) {
$documentation = $this->injectSecurity($documentation, $this->securityConfig);
}
$fileSystem->put(
$filename,
$documentation->toJson(JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)
);
}
/**
* Inject security schemes settings.
*
* @param Collection<int|string, mixed> $documentation The parse json
* @param array<string,mixed> $config The securityScheme settings from l5-swagger
* @return Collection<int|string, mixed>
*/
protected function injectSecuritySchemes(Collection $documentation, array $config): Collection
{
$components = collect();
if ($documentation->has('components')) {
$components = collect($documentation->get('components'));
}
$securitySchemes = collect();
if ($components->has('securitySchemes')) {
$securitySchemes = collect($components->get('securitySchemes'));
}
foreach ($config as $key => $cfg) {
$securitySchemes->offsetSet($key, $this->arrayToObject($cfg));
}
$components->offsetSet('securitySchemes', $securitySchemes);
$documentation->offsetSet('components', $components);
return $documentation;
}
/**
* Inject security settings.
*
* @param Collection<int|string, mixed> $documentation The parse json
* @param array<string, mixed> $config The security settings from l5-swagger
* @return Collection<int|string, mixed>
*/
protected function injectSecurity(Collection $documentation, array $config): Collection
{
$security = collect();
if ($documentation->has('security')) {
$security = collect($documentation->get('security'));
}
foreach ($config as $key => $cfg) {
if (! empty($cfg)) {
$security->put($key, $this->arrayToObject($cfg));
}
}
if ($security->count()) {
$documentation->offsetSet('security', $security);
}
return $documentation;
}
/**
* Converts an array to an object.
*
* @param $array<string, mixed>
* @return object
*/
protected function arrayToObject(mixed $array): mixed
{
return json_decode(json_encode($array) ?: '');
}
}
-66
View File
@@ -1,66 +0,0 @@
<?php
use L5Swagger\Exceptions\L5SwaggerException;
if (! function_exists('swagger_ui_dist_path')) {
/**
* Returns swagger-ui composer dist path.
*
* @param string $documentation
* @param string|null $asset
* @return string
*
* @throws L5SwaggerException
*/
function swagger_ui_dist_path(string $documentation, ?string $asset = null): string
{
$allowedFiles = [
'favicon-16x16.png',
'favicon-32x32.png',
'oauth2-redirect.html',
'swagger-ui-bundle.js',
'swagger-ui-standalone-preset.js',
'swagger-ui.css',
'swagger-ui.js',
];
$defaultPath = 'vendor/swagger-api/swagger-ui/dist/';
$path = base_path(
config('l5-swagger.documentations.'.$documentation.'.paths.swagger_ui_assets_path', $defaultPath)
);
if (! $asset) {
return realpath($path) ?: '';
}
if (! in_array($asset, $allowedFiles, true)) {
throw new L5SwaggerException(sprintf('(%s) - this L5 Swagger asset is not allowed', $asset));
}
return realpath($path.$asset) ?: '';
}
}
if (! function_exists('l5_swagger_asset')) {
/**
* Returns asset from swagger-ui composer package.
*
* @param string $documentation
* @param $asset string
* @return string
*
* @throws L5SwaggerException
*/
function l5_swagger_asset(string $documentation, string $asset): string
{
$file = swagger_ui_dist_path($documentation, $asset);
if (! file_exists($file)) {
throw new L5SwaggerException(sprintf('Requested L5 Swagger asset file (%s) does not exists', $asset));
}
$useAbsolutePath = config('l5-swagger.documentations.'.$documentation.'.paths.use_absolute_path', true);
return route('l5-swagger.'.$documentation.'.asset', $asset, $useAbsolutePath).'?v='.md5_file($file);
}
}
-66
View File
@@ -1,66 +0,0 @@
<?php
use Illuminate\Routing\Router;
use Illuminate\Support\Facades\Route;
use L5Swagger\ConfigFactory;
use L5Swagger\Http\Middleware\Config as L5SwaggerConfig;
Route::group(['namespace' => 'L5Swagger'], static function (Router $router) {
$configFactory = resolve(ConfigFactory::class);
/** @var array<string,string> $documentations */
$documentations = config('l5-swagger.documentations', []);
foreach (array_keys($documentations) as $name) {
$config = $configFactory->documentationConfig($name);
if (! isset($config['routes'])) {
continue;
}
$groupOptions = $config['routes']['group_options'] ?? [];
if (! isset($groupOptions['middleware'])) {
$groupOptions['middleware'] = [];
}
if (is_string($groupOptions['middleware'])) {
$groupOptions['middleware'] = [$groupOptions['middleware']];
}
$groupOptions['l5-swagger.documentation'] = $name;
$groupOptions['middleware'][] = L5SwaggerConfig::class;
Route::group($groupOptions, static function (Router $router) use ($name, $config) {
if (isset($config['routes']['api'])) {
$router->get($config['routes']['api'], [
'as' => 'l5-swagger.'.$name.'.api',
'middleware' => $config['routes']['middleware']['api'] ?? [],
'uses' => '\L5Swagger\Http\Controllers\SwaggerController@api',
]);
}
if (isset($config['routes']['docs'])) {
$router->get($config['routes']['docs'], [
'as' => 'l5-swagger.'.$name.'.docs',
'middleware' => $config['routes']['middleware']['docs'] ?? [],
'uses' => '\L5Swagger\Http\Controllers\SwaggerController@docs',
]);
$router->get($config['routes']['docs'].'/asset/{asset}', [
'as' => 'l5-swagger.'.$name.'.asset',
'middleware' => $config['routes']['middleware']['asset'] ?? [],
'uses' => '\L5Swagger\Http\Controllers\SwaggerAssetController@index',
]);
}
if (isset($config['routes']['oauth2_callback'])) {
$router->get($config['routes']['oauth2_callback'], [
'as' => 'l5-swagger.'.$name.'.oauth2_callback',
'middleware' => $config['routes']['middleware']['oauth2_callback'] ?? [],
'uses' => '\L5Swagger\Http\Controllers\SwaggerController@oauth2Callback',
]);
}
});
}
});
+3
View File
@@ -0,0 +1,3 @@
# Changelog
All notable changes to `scramble` will be documented in this file.
@@ -1,14 +1,16 @@
Copyright (c) 2024-present Fabien Potencier
The MIT License (MIT)
Copyright (c) dedoc <litvinenko95@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+41
View File
@@ -0,0 +1,41 @@
<p>
<a href="https://scramble.dedoc.co" target="_blank">
<img src="./.github/gh-img.png?v=1" alt="Scramble Laravel API documentation generator"/>
</a>
</p>
# Scramble
Scramble generates API documentation for Laravel project. Without requiring you to manually write PHPDoc annotations. Docs are generated in OpenAPI 3.1.0 format.
## Documentation
You can find full documentation at [scramble.dedoc.co](https://scramble.dedoc.co).
## Introduction
The main motto of the project is generating your API documentation without requiring you to annotate your code.
This allows you to focus on code and avoid annotating every possible param/field as it may result in outdated documentation. By generating docs automatically from the code your API will always have up-to-date docs which you can trust.
## Installation
You can install the package via composer:
```shell
composer require dedoc/scramble
```
## Usage
After install you will have 2 routes added to your application:
- `/docs/api` - UI viewer for your documentation
- `/docs/api.json` - Open API document in JSON format describing your API.
By default, these routes are available only in `local` environment. You can change this behavior [by defining `viewApiDocs` gate](https://scramble.dedoc.co/usage/getting-started#docs-authorization).
---
<p>
<a href="https://savelife.in.ua/en/donate-en/" target="_blank">
<img src="./.github/gh-promo.svg?v=1" alt="Donate"/>
</a>
</p>
+73
View File
@@ -0,0 +1,73 @@
{
"name": "dedoc/scramble",
"description": "Automatic generation of API documentation for Laravel applications.",
"keywords": [
"laravel",
"documentation",
"openapi"
],
"homepage": "https://github.com/dedoc/scramble",
"license": "MIT",
"authors": [
{
"name": "Roman Lytvynenko",
"email": "litvinenko95@gmail.com",
"role": "Developer"
}
],
"require": {
"php": "^8.1",
"illuminate/contracts": "^10.0|^11.0|^12.0|^13.0",
"myclabs/deep-copy": "^1.12",
"nikic/php-parser": "^5.0",
"phpstan/phpdoc-parser": "^1.0|^2.0",
"spatie/laravel-package-tools": "^1.9.2"
},
"require-dev": {
"larastan/larastan": "^3.3",
"laravel/pint": "^v1.1.0",
"nunomaduro/collision": "^7.0|^8.0",
"orchestra/testbench": "^8.0|^9.0|^10.0|^11.0",
"pestphp/pest": "^2.34|^3.7|^4.4",
"pestphp/pest-plugin-laravel": "^2.3|^3.1|^4.1",
"phpstan/extension-installer": "^1.4",
"phpstan/phpstan-deprecation-rules": "^2.0",
"phpstan/phpstan-phpunit": "^2.0",
"phpunit/phpunit": "^10.5|^11.5.3|^12.5.12",
"spatie/laravel-permission": "^6.10|^7.2",
"spatie/pest-plugin-snapshots": "^2.1"
},
"autoload": {
"psr-4": {
"Dedoc\\Scramble\\": "src",
"Dedoc\\Scramble\\Database\\Factories\\": "database/factories"
}
},
"autoload-dev": {
"psr-4": {
"Dedoc\\Scramble\\Tests\\": "tests"
}
},
"scripts": {
"analyse": "vendor/bin/phpstan analyse",
"test": "vendor/bin/pest",
"test-coverage": "vendor/bin/pest --coverage",
"format": "vendor/bin/pint"
},
"config": {
"sort-packages": true,
"allow-plugins": {
"pestphp/pest-plugin": true,
"phpstan/extension-installer": true
}
},
"extra": {
"laravel": {
"providers": [
"Dedoc\\Scramble\\ScrambleServiceProvider"
]
}
},
"minimum-stability": "dev",
"prefer-stable": true
}
+174
View File
@@ -0,0 +1,174 @@
<?php
use Dedoc\Scramble\Http\Middleware\RestrictedDocsAccess;
return [
/*
* Which routes to document. String or array form; use Scramble::routes() for custom selection.
*
* 'api_path' => [
* 'include' => 'api',
* 'exclude' => ['api/internal'],
* ],
*
* Without *, patterns match path segments (api matches api and api/users, not apiary).
* With *, Str::is is used (e.g. api/v*).
*
* One static include default server is /{include} and paths are stripped (/users).
* Multiple includes or wildcards server defaults to / and paths stay full (/api/users).
* Override with `servers`, or use Scramble::registerApi() for separate bases.
*/
'api_path' => 'api',
/*
* Your API domain. By default, app domain is used. This is also a part of the default API routes
* matcher, so when implementing your own, make sure you use this config if needed.
*/
'api_domain' => null,
/*
* The path where your OpenAPI specification will be exported.
*/
'export_path' => 'api.json',
/*
* Cache configuration for the generated OpenAPI document.
*
* Use `scramble:cache` to warm the cache and `scramble:clear` to invalidate it.
*/
'cache' => [
'key' => 'scramble.openapi',
'store' => 'file',
],
'info' => [
/*
* API version.
*/
'version' => env('API_VERSION', '0.0.1'),
/*
* Description rendered on the home page of the API documentation (`/docs/api`).
*/
'description' => '',
],
'ui' => [
'title' => null,
],
'renderer' => 'elements',
'renderers' => [
/*
* Stoplight Elements config options: https://docs.stoplight.io/docs/elements/b074dc47b2826-elements-configuration-options
*/
'elements' => [
'view' => 'scramble::docs',
'theme' => 'light',
'hideTryIt' => false,
'hideSchemas' => false,
'logo' => '',
'tryItCredentialsPolicy' => 'include',
'layout' => 'responsive',
'router' => 'hash',
],
/*
* Scalar API reference config options: https://scalar.com/products/api-references/configuration
*/
'scalar' => [
'view' => 'scramble::scalar',
'cdn' => 'https://cdn.jsdelivr.net/npm/@scalar/api-reference',
'theme' => 'laravel',
'proxyUrl' => 'https://proxy.scalar.com',
'darkMode' => false,
'showDeveloperTools' => 'never',
'agent' => ['disabled' => true],
'credentials' => 'include',
],
],
/*
* The list of servers of the API. By default, when `null`, server URL will be created from
* `scramble.api_path` and `scramble.api_domain` config variables. When providing an array, you
* will need to specify the local server URL manually (if needed).
*
* Example of non-default config (final URLs are generated using Laravel `url` helper):
*
* ```php
* 'servers' => [
* 'Live' => 'api',
* 'Prod' => 'https://scramble.dedoc.co/api',
* ],
* ```
*/
'servers' => null,
/**
* Determines how Scramble stores the descriptions of enum cases.
* Available options:
* - 'description' Case descriptions are stored as the enum schema's description using table formatting.
* - 'extension' Case descriptions are stored in the `x-enumDescriptions` enum schema extension.
*
* @see https://redocly.com/docs-legacy/api-reference-docs/specification-extensions/x-enum-descriptions
* - false - Case descriptions are ignored.
*/
'enum_cases_description_strategy' => 'description',
/**
* Determines how Scramble stores the names of enum cases.
* Available options:
* - 'names' Case names are stored in the `x-enumNames` enum schema extension.
* - 'varnames' - Case names are stored in the `x-enum-varnames` enum schema extension.
* - false - Case names are not stored.
*/
'enum_cases_names_strategy' => false,
/**
* When Scramble encounters deep objects in query parameters, it flattens the parameters so the generated
* OpenAPI document correctly describes the API. Flattening deep query parameters is relevant until
* OpenAPI 3.2 is released and query string structure can be described properly.
*
* For example, this nested validation rule describes the object with `bar` property:
* `['foo.bar' => ['required', 'int']]`.
*
* When `flatten_deep_query_parameters` is `true`, Scramble will document the parameter like so:
* `{"name":"foo[bar]", "schema":{"type":"int"}, "required":true}`.
*
* When `flatten_deep_query_parameters` is `false`, Scramble will document the parameter like so:
* `{"name":"foo", "schema": {"type":"object", "properties":{"bar":{"type": "int"}}, "required": ["bar"]}, "required":true}`.
*/
'flatten_deep_query_parameters' => true,
'middleware' => [
'web',
RestrictedDocsAccess::class,
],
'extensions' => [],
/*
* Automatically document API security (OpenAPI `security` / `securitySchemes`) based on route
* middleware.
*
* Disabled by default. Uncomment the line below to enable `MiddlewareAuthSecurityStrategy`.
* When at least one documented route uses middleware matching the configured patterns (by default
* `auth` and `auth:*`), bearer auth is applied globally. Routes without matching middleware are
* marked as public (`security: []`).
*
* Set to `null` explicitly to disable. If you already configure security manually via
* `afterOpenApiGenerated` / `extendOpenApi`, keep this disabled to avoid duplicate schemes.
*
* Customize with a class-string or [class, options]:
*
* 'security_strategy' => [
* \Dedoc\Scramble\SecurityDocumentation\MiddlewareAuthSecurityStrategy::class,
* [
* 'middleware' => ['auth', 'auth:*'],
* 'scheme' => \Dedoc\Scramble\Support\Generator\SecurityScheme::http('bearer'),
* ],
* ],
*/
// 'security_strategy' => \Dedoc\Scramble\SecurityDocumentation\MiddlewareAuthSecurityStrategy::class,
'security_strategy' => null,
];
File diff suppressed because one or more lines are too long
+46
View File
@@ -0,0 +1,46 @@
<?php
use Dedoc\Scramble\Infer\Scope\Index;
use Dedoc\Scramble\Infer\Services\FileParser;
use PhpParser\ParserFactory;
include 'vendor/autoload.php';
$classes = [
Exception::class,
RuntimeException::class,
\Symfony\Component\HttpKernel\Exception\HttpException::class,
];
app()->singleton(FileParser::class, function () {
return new FileParser(
(new ParserFactory)->createForHostVersion()
);
});
app()->singleton(Index::class);
$classesDefinitions = [];
foreach ($classes as $className) {
$classesDefinitions[$className] = generateClassDefinitionInitialization($className);
}
function generateClassDefinitionInitialization(string $name)
{
$classAnalyzer = app(\Dedoc\Scramble\Infer\Analyzer\ClassAnalyzer::class);
$classDefinition = $classAnalyzer->analyze($name);
foreach ($classDefinition->methods as $methodName => $method) {
$classDefinition->getMethodDefinition($methodName);
}
return serialize($classAnalyzer->analyze($name));
}
$def = var_export($classesDefinitions, true);
file_put_contents(__DIR__.'/../classMap.php', <<<EOL
<?php
/*
* Do not change! This file is generated via scripts/generate.php.
*/
return {$def};
EOL);
+17
View File
@@ -0,0 +1,17 @@
includes:
- phpstan-baseline.neon
parameters:
level: 9
paths:
- src
- config
stubFiles:
- stubs/DeepCopy.stub
tmpDir: build/phpstan
checkOctaneCompatibility: true
checkModelProperties: true
typeAliases:
Rule: 'string|\Illuminate\Contracts\Validation\ValidationRule'
RuleSet: 'Rule|Rule[]'
#reportUnmatchedIgnoredErrors: false
+6
View File
@@ -0,0 +1,6 @@
{
"preset": "laravel",
"rules": {
"fully_qualified_strict_types": false
}
}
+112
View File
@@ -0,0 +1,112 @@
<!doctype html>
<html lang="en" data-theme="{{ $config->renderer()->get('theme', 'light') }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="color-scheme" content="{{ $config->renderer()->get('theme', 'light') }}">
<title>{{ $config->get('ui.title') ?? config('app.name') . ' - API Docs' }}</title>
<script src="https://unpkg.com/@stoplight/elements@8.4.2/web-components.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/@stoplight/elements@8.4.2/styles.min.css">
<script>
const originalFetch = window.fetch;
// intercept TryIt requests and add the XSRF-TOKEN header,
// which is necessary for Sanctum cookie-based authentication to work correctly
window.fetch = (url, options) => {
const CSRF_TOKEN_COOKIE_KEY = "XSRF-TOKEN";
const CSRF_TOKEN_HEADER_KEY = "X-XSRF-TOKEN";
const getCookieValue = (key) => {
const cookie = document.cookie.split(';').find((cookie) => cookie.trim().startsWith(key));
return cookie?.split("=")[1];
};
const updateFetchHeaders = (
headers,
headerKey,
headerValue,
) => {
if (headers instanceof Headers) {
headers.set(headerKey, headerValue);
} else if (Array.isArray(headers)) {
headers.push([headerKey, headerValue]);
} else if (headers) {
headers[headerKey] = headerValue;
}
};
const csrfToken = getCookieValue(CSRF_TOKEN_COOKIE_KEY);
if (csrfToken) {
const { headers = new Headers() } = options || {};
updateFetchHeaders(headers, CSRF_TOKEN_HEADER_KEY, decodeURIComponent(csrfToken));
return originalFetch(url, {
...options,
headers,
});
}
return originalFetch(url, options);
};
</script>
<style>
html, body { margin:0; height:100%; }
body { background-color: var(--color-canvas); }
/* issues about the dark theme of stoplight/mosaic-code-viewer using web component:
* https://github.com/stoplightio/elements/issues/2188#issuecomment-1485461965
*/
[data-theme="dark"] .token.property {
color: rgb(128, 203, 196) !important;
}
[data-theme="dark"] .token.operator {
color: rgb(255, 123, 114) !important;
}
[data-theme="dark"] .token.number {
color: rgb(247, 140, 108) !important;
}
[data-theme="dark"] .token.string {
color: rgb(165, 214, 255) !important;
}
[data-theme="dark"] .token.boolean {
color: rgb(121, 192, 255) !important;
}
[data-theme="dark"] .token.punctuation {
color: #dbdbdb !important;
}
</style>
</head>
<body style="height: 100vh; overflow-y: hidden">
<elements-api
id="docs"
@foreach($config->renderer()->all(except: ['theme']) as $key => $value)
@continue(! $value)
{{ $key }}="{{ $value === true ? 'true' : ($value === false ? 'false' : $value) }}"
@endforeach
/>
<script>
(async () => {
const docs = document.getElementById('docs');
docs.apiDescriptionDocument = @json($spec);
})();
</script>
@if($config->renderer()->get('theme', 'light') === 'system')
<script>
var mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
function updateTheme(e) {
if (e.matches) {
window.document.documentElement.setAttribute('data-theme', 'dark');
window.document.getElementsByName('color-scheme')[0].setAttribute('content', 'dark');
} else {
window.document.documentElement.setAttribute('data-theme', 'light');
window.document.getElementsByName('color-scheme')[0].setAttribute('content', 'light');
}
}
mediaQuery.addEventListener('change', updateTheme);
updateTheme(mediaQuery);
</script>
@endif
</body>
</html>
+32
View File
@@ -0,0 +1,32 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>{{ $config->get('ui.title') ?? config('app.name') . ' - API Docs' }}</title>
</head>
<body>
<div id="app"></div>
<script src="{{ $config->renderer()->get('cdn', 'https://cdn.jsdelivr.net/npm/@scalar/api-reference') }}"></script>
<script>
const CSRF_TOKEN_COOKIE_KEY = "XSRF-TOKEN";
const CSRF_TOKEN_HEADER_KEY = "X-XSRF-TOKEN";
const getCookieValue = (key) => {
const cookie = document.cookie.split(';').find((cookie) => cookie.trim().startsWith(key));
return cookie?.split("=")[1];
};
Scalar.createApiReference('#app', {
content: @json($spec),
...@json($config->renderer()->all(except: ['cdn', 'credentials'])),
onBeforeRequest: ({ requestBuilder }) => {
requestBuilder.headers.set(CSRF_TOKEN_HEADER_KEY, decodeURIComponent(getCookieValue(CSRF_TOKEN_COOKIE_KEY)))
},
customFetch: (input, init) => {
return window.fetch(input, { ...init, credentials: @json($config->renderer()->get('credentials', 'include')) })
}
})
</script>
</body>
</html>
+7
View File
@@ -0,0 +1,7 @@
<?php
use Dedoc\Scramble\Scramble;
Scramble::registerUiRoute(path: 'docs/api')->name('scramble.docs.ui');
Scramble::registerJsonSpecificationRoute(path: 'docs/api.json')->name('scramble.docs.document');
+10
View File
@@ -0,0 +1,10 @@
<?php
namespace Dedoc\Scramble;
class AbstractOpenApiVisitor implements OpenApiVisitor
{
public function enter(mixed $object, array $path = []) {}
public function leave(mixed $object, array $path = []) {}
}
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
#[Attribute(Attribute::IS_REPEATABLE | Attribute::TARGET_ALL)]
class BodyParameter extends Parameter
{
public function __construct(
string $name,
?string $description = null,
?bool $required = null,
$deprecated = false,
?string $type = null,
?string $format = null,
bool $infer = true,
mixed $default = new MissingValue,
mixed $example = new MissingValue,
array $examples = [],
) {
parent::__construct('body', $name, $description, $required, $deprecated, $type, $format, $infer, $default, $example, $examples);
}
}
@@ -0,0 +1,24 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
#[Attribute(Attribute::IS_REPEATABLE | Attribute::TARGET_ALL)]
class CookieParameter extends Parameter
{
public function __construct(
string $name,
?string $description = null,
?bool $required = null,
$deprecated = false,
?string $type = null,
?string $format = null,
bool $infer = true,
mixed $default = new MissingValue,
mixed $example = new MissingValue,
array $examples = [],
) {
parent::__construct('cookie', $name, $description, $required, $deprecated, $type, $format, $infer, $default, $example, $examples);
}
}
+32
View File
@@ -0,0 +1,32 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
/**
* Adds metadata to endpoints.
*/
#[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)]
class Endpoint
{
public function __construct(
/**
* Assigns an OperationID to a controller method.
*/
public readonly ?string $operationId = null,
/**
* Sets the title (summary) of the endpoint.
*/
public readonly ?string $title = null,
/**
* Sets the description of the endpoint.
*/
public readonly ?string $description = null,
/**
* Allows to override the method of the endpoint in the documentation. Useful when you want to document the
* `PUT|PATCH` endpoint as `PATCH`. The method provided here MUST be the actual method the API will reply to.
*/
public readonly ?string $method = null,
) {}
}
+26
View File
@@ -0,0 +1,26 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Dedoc\Scramble\Support\Generator\Example as OpenApiExample;
use Dedoc\Scramble\Support\Generator\MissingValue as OpenApiMissingValue;
class Example
{
public function __construct(
public mixed $value = new MissingValue,
public ?string $summary = null,
public ?string $description = null,
public ?string $externalValue = null,
) {}
public static function toOpenApiExample(Example $example): OpenApiExample
{
return new OpenApiExample(
value: $example->value instanceof MissingValue ? new OpenApiMissingValue : $example->value,
summary: $example->summary,
description: $example->description,
externalValue: $example->externalValue,
);
}
}
@@ -0,0 +1,11 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
/**
* Excludes all routes of a controller from the API documentation. Applies to controller's methods.
*/
#[Attribute(Attribute::TARGET_CLASS)]
class ExcludeAllRoutesFromDocs {}
@@ -0,0 +1,11 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
/**
* Excludes a route from API documentation. Applies to controller's methods.
*/
#[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)]
class ExcludeRouteFromDocs {}
+23
View File
@@ -0,0 +1,23 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
/**
* Groups endpoints.
*/
#[Attribute(Attribute::TARGET_CLASS | Attribute::TARGET_METHOD)]
class Group
{
public function __construct(
public readonly ?string $name = null,
public readonly ?string $description = null,
/**
* Determines the ordering of the groups. Groups with the same weight, are sorted
* by the name (with `SORT_LOCALE_STRING` sorting flag).
*/
public readonly int $weight = PHP_INT_MAX,
) {}
}
+70
View File
@@ -0,0 +1,70 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
use Dedoc\Scramble\PhpDoc\PhpDocTypeHelper;
use Dedoc\Scramble\Support\Generator\Header as OpenApiHeader;
use Dedoc\Scramble\Support\Generator\MissingValue as OpenApiMissingValue;
use Dedoc\Scramble\Support\Generator\Schema;
use Dedoc\Scramble\Support\Generator\Types\MixedType;
use Dedoc\Scramble\Support\Generator\Types\StringType;
use Dedoc\Scramble\Support\Generator\Types\Type as OpenApiType;
use Dedoc\Scramble\Support\Generator\TypeTransformer;
use Dedoc\Scramble\Support\PhpDoc;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
#[Attribute(Attribute::IS_REPEATABLE | Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)]
class Header
{
/**
* @param scalar|array<mixed>|object|MissingValue $example
*/
public function __construct(
public readonly string $name,
public readonly ?string $description = null,
public readonly ?string $type = null,
public readonly ?string $format = null,
public readonly ?bool $required = null,
/** @var array<mixed>|scalar|null|MissingValue */
public readonly mixed $default = new MissingValue,
public readonly mixed $example = new MissingValue,
/** @var array<string, Example> $examples */
public readonly array $examples = [],
public readonly ?bool $deprecated = null,
public readonly ?bool $explode = null,
public readonly int|string $status = 200,
) {}
public static function toOpenApiHeader(Header $header, TypeTransformer $openApiTransformer): OpenApiHeader
{
$type = self::getType($header, $openApiTransformer);
$default = $header->default instanceof MissingValue ? new OpenApiMissingValue : $header->default;
$format = $header->format ?: '';
if ($type instanceof MixedType && ($format || ! $default instanceof OpenApiMissingValue)) {
$type = new StringType;
}
return new OpenApiHeader(
description: $header->description,
required: $header->required,
deprecated: $header->deprecated,
explode: $header->explode,
schema: Schema::fromType(
$type->default($default)->format($format)
),
example: $header->example instanceof MissingValue ? new OpenApiMissingValue : $header->example,
examples: array_map(fn ($e) => Example::toOpenApiExample($e), $header->examples),
);
}
public static function getType(Header $header, TypeTransformer $openApiTransformer): OpenApiType
{
return $header->type ? $openApiTransformer->transform(
PhpDocTypeHelper::toType(
PhpDoc::parse("/** @return $header->type */")->getReturnTagValues()[0]->type ?? new IdentifierTypeNode('mixed')
)
) : new MixedType;
}
}
@@ -0,0 +1,24 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
#[Attribute(Attribute::IS_REPEATABLE | Attribute::TARGET_ALL)]
class HeaderParameter extends Parameter
{
public function __construct(
string $name,
?string $description = null,
?bool $required = null,
$deprecated = false,
?string $type = null,
?string $format = null,
bool $infer = true,
mixed $default = new MissingValue,
mixed $example = new MissingValue,
array $examples = [],
) {
parent::__construct('header', $name, $description, $required, $deprecated, $type, $format, $infer, $default, $example, $examples);
}
}
+11
View File
@@ -0,0 +1,11 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
/**
* Marks a class property as hidden from OpenAPI object schema.
*/
#[Attribute(Attribute::TARGET_PROPERTY)]
class Hidden {}
+17
View File
@@ -0,0 +1,17 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
#[Attribute(Attribute::IS_REPEATABLE | Attribute::TARGET_CLASS | Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)]
class IgnoreParam
{
/**
* @param 'query'|'path'|'header'|'cookie'|'body'|null $in
*/
public function __construct(
public readonly string $name,
public readonly ?string $in = null,
) {}
}
+5
View File
@@ -0,0 +1,5 @@
<?php
namespace Dedoc\Scramble\Attributes;
class MissingValue {}
+32
View File
@@ -0,0 +1,32 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
#[Attribute(Attribute::IS_REPEATABLE | Attribute::TARGET_ALL)]
class Parameter
{
public readonly bool $required;
/**
* @param 'query'|'path'|'header'|'cookie'|'body' $in
* @param scalar|array|object|MissingValue $example
* @param array<string, Example> $examples The key is a distinct name and the value is an example object.
*/
public function __construct(
public readonly string $in,
public readonly string $name,
public readonly ?string $description = null,
?bool $required = null,
public bool $deprecated = false,
public ?string $type = null,
public ?string $format = null,
public bool $infer = true,
public mixed $default = new MissingValue,
public mixed $example = new MissingValue,
public array $examples = [],
) {
$this->required = $required !== null ? $required : $this->in === 'path';
}
}
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
#[Attribute(Attribute::IS_REPEATABLE | Attribute::TARGET_ALL)]
class PathParameter extends Parameter
{
public function __construct(
string $name,
?string $description = null,
?bool $required = null,
$deprecated = false,
?string $type = null,
?string $format = null,
bool $infer = true,
mixed $default = new MissingValue,
mixed $example = new MissingValue,
array $examples = [],
) {
parent::__construct('path', $name, $description, $required, $deprecated, $type, $format, $infer, $default, $example, $examples);
}
}
+24
View File
@@ -0,0 +1,24 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
#[Attribute(Attribute::IS_REPEATABLE | Attribute::TARGET_ALL)]
class QueryParameter extends Parameter
{
public function __construct(
string $name,
?string $description = null,
?bool $required = null,
$deprecated = false,
?string $type = null,
?string $format = null,
bool $infer = true,
mixed $default = new MissingValue,
mixed $example = new MissingValue,
array $examples = [],
) {
parent::__construct('query', $name, $description, $required, $deprecated, $type, $format, $infer, $default, $example, $examples);
}
}
+118
View File
@@ -0,0 +1,118 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
use Dedoc\Scramble\Infer\Services\FileNameResolver;
use Dedoc\Scramble\PhpDoc\PhpDocTypeHelper;
use Dedoc\Scramble\Support\Generator\Reference;
use Dedoc\Scramble\Support\Generator\Response as OpenApiResponse;
use Dedoc\Scramble\Support\Generator\Schema;
use Dedoc\Scramble\Support\Generator\Types\StringType;
use Dedoc\Scramble\Support\Generator\Types\Type;
use Dedoc\Scramble\Support\Generator\TypeTransformer;
use Dedoc\Scramble\Support\PhpDoc;
use Illuminate\Support\Str;
use PHPStan\PhpDocParser\Ast\Type\IdentifierTypeNode;
use function DeepCopy\deep_copy;
/**
* @phpstan-type BaseExample array<mixed>|scalar|null
*/
#[Attribute(Attribute::IS_REPEATABLE | Attribute::TARGET_METHOD | Attribute::TARGET_FUNCTION)]
class Response
{
public function __construct(
public readonly int|string $status = 200,
public readonly ?string $description = null,
public readonly string $mediaType = 'application/json',
public readonly ?string $type = null,
public readonly ?string $format = null,
/** @var BaseExample|BaseExample[] $examples */
public readonly mixed $examples = [],
) {}
public static function toOpenApiResponse(Response $responseAttribute, ?OpenApiResponse $originalResponse, TypeTransformer $openApiTransformer, ?FileNameResolver $nameResolver): OpenApiResponse
{
$response = $originalResponse ? deep_copy($originalResponse) : OpenApiResponse::make($responseAttribute->status);
$response = self::applyResponseMediaType($responseAttribute, $response, $openApiTransformer, $nameResolver);
$response->setDescription(self::getDescription($responseAttribute, $response));
return $response;
}
private static function applyResponseMediaType(Response $responseAttribute, OpenApiResponse $response, TypeTransformer $openApiTransformer, ?FileNameResolver $nameResolver): OpenApiResponse
{
if (! $responseAttribute->type) {
return $response
->setContent(
$responseAttribute->mediaType,
self::getMediaType($responseAttribute, $response),
);
}
$responseFromType = $openApiTransformer->toResponse(
PhpDocTypeHelper::toType(
PhpDoc::parse("/** @return $responseAttribute->type */", $nameResolver)->getReturnTagValues()[0]->type ?? new IdentifierTypeNode('mixed')
)
);
if ($responseFromType instanceof Reference) {
$responseFromType = deep_copy($responseFromType->resolve());
}
/** @var OpenApiResponse|null $responseFromType */
if (! $responseFromType) {
return $response->setContent(
$responseAttribute->mediaType,
self::getMediaType($responseAttribute, $response),
);
}
return $response
->setDescription($responseFromType->description ?: self::getDescription($responseAttribute, $response))
->setContent(
$responseAttribute->mediaType,
self::getMediaType($responseAttribute, $responseFromType),
);
}
private static function getDescription(Response $responseAttribute, OpenApiResponse $response): string
{
if ($responseAttribute->description === null) {
return $response->description;
}
return Str::replace('$0', $response->description, $responseAttribute->description);
}
private static function getMediaType(Response $responseAttribute, OpenApiResponse $response): Schema|Reference
{
return self::getSchema($responseAttribute, $response->content[$responseAttribute->mediaType] ?? null);
}
private static function getSchema(Response $responseAttribute, Schema|Reference|null $schema): Schema|Reference
{
if (! $responseAttribute->format && ! $responseAttribute->examples) {
return $schema ?: Schema::fromType(new StringType);
}
$schemaType = $schema
? clone ($schema instanceof Reference ? $schema->resolve()->type : $schema->type)
: new StringType;
/** @var Type $schemaType */
if ($responseAttribute->format) {
$schemaType->format($responseAttribute->format);
}
if ($responseAttribute->examples) {
$schemaType->examples($responseAttribute->examples); // @phpstan-ignore argument.type
}
return Schema::fromType($schemaType);
}
}
+21
View File
@@ -0,0 +1,21 @@
<?php
namespace Dedoc\Scramble\Attributes;
use Attribute;
/**
* Allows naming class based schemas for different contexts.
*/
#[Attribute(Attribute::TARGET_CLASS)]
class SchemaName
{
public function __construct(
public readonly string $name,
/**
* Some classes can be used both as input and output schemas. So this property is used to
* explicitly name the schema when is in input context.
*/
public readonly ?string $input = null,
) {}
}
+41
View File
@@ -0,0 +1,41 @@
<?php
namespace Dedoc\Scramble;
class CacheableGenerator
{
public function __construct(
private Generator $generator,
) {}
public function __invoke(?GeneratorConfig $config = null): array
{
$config ??= Scramble::getGeneratorConfig(Scramble::DEFAULT_API);
$store = config('scramble.cache.store');
$keyBase = config('scramble.cache.key');
if (! $store || ! $keyBase) {
return ($this->generator)($config);
}
$key = $keyBase.':'.$this->resolveApi($config);
if ($cached = cache()->store($store)->get($key)) {
return $cached;
}
return ($this->generator)($config);
}
private function resolveApi(GeneratorConfig $config): string
{
foreach (Scramble::getConfigurationsInstance()->all() as $api => $generatorConfig) {
if ($generatorConfig === $config) {
return $api;
}
}
return Scramble::DEFAULT_API;
}
}
+96
View File
@@ -0,0 +1,96 @@
<?php
namespace Dedoc\Scramble\Configuration;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
use InvalidArgumentException;
class ApiPath
{
/**
* @param list<string> $includes
* @param list<string> $excludes
*/
private function __construct(
private readonly array $includes,
private readonly array $excludes,
) {}
/**
* @param string|array{include?: string|string[], exclude?: string|string[]}|null $config
*/
public static function from(mixed $config, string $default = 'api'): self
{
if ($config === null || is_string($config)) {
return new self(self::normalizePrefixes($config ?? $default), []);
}
if (is_array($config) && (array_key_exists('include', $config) || array_key_exists('exclude', $config))) {
return new self(
self::normalizePrefixes($config['include'] ?? $default),
self::normalizePrefixes($config['exclude'] ?? []),
);
}
throw new InvalidArgumentException(
'Invalid scramble.api_path config. Expected a string or an array with `include` and/or `exclude` keys.'
);
}
/**
* @return list<string>
*/
private static function normalizePrefixes(mixed $prefixes): array
{
if ($prefixes === '' || $prefixes === null) {
return [];
}
return array_values(array_filter(Arr::wrap($prefixes), fn ($prefix) => is_string($prefix) && $prefix !== ''));
}
public function matches(string $uri): bool
{
if ($this->includes !== [] && ! $this->matchesAny($uri, $this->includes)) {
return false;
}
return ! $this->matchesAny($uri, $this->excludes);
}
public function stripPrefix(string $uri): string
{
if (! $this->usesSingleBase()) {
return $uri;
}
return (string) Str::of($uri)
->replaceStart($this->includes[0], '')
->trim('/');
}
public function serverPath(): string
{
return $this->usesSingleBase() ? $this->includes[0] : '';
}
private function usesSingleBase(): bool
{
return count($this->includes) === 1 && ! str_contains($this->includes[0], '*');
}
/**
* @param list<string> $patterns
*/
private function matchesAny(string $uri, array $patterns): bool
{
foreach ($patterns as $pattern) {
if (str_contains($pattern, '*') ? Str::is($pattern, $uri) : ($uri === $pattern || Str::startsWith($uri, $pattern.'/'))) {
return true;
}
}
return false;
}
}
@@ -0,0 +1,56 @@
<?php
namespace Dedoc\Scramble\Configuration;
use Dedoc\Scramble\Contracts\DocumentTransformer;
use Illuminate\Support\Arr;
class DocumentTransformers
{
protected array $transformers = [];
protected array $appends = [];
protected array $prepends = [];
public function append(array|callable|string $transformers)
{
$this->appends = array_merge(
$this->appends,
Arr::wrap($transformers)
);
return $this;
}
public function prepend(array|callable|string $transformers)
{
$this->prepends = array_merge(
$this->prepends,
Arr::wrap($transformers)
);
return $this;
}
public function use(array $transformers)
{
$this->transformers = $transformers;
return $this;
}
/**
* @return (callable|class-string<DocumentTransformer>)[]
*/
public function all(): array
{
$base = $this->transformers;
return array_values(array_unique([
...$this->prepends,
...$base,
...$this->appends,
], SORT_REGULAR));
}
}
@@ -0,0 +1,53 @@
<?php
namespace Dedoc\Scramble\Configuration;
use Dedoc\Scramble\GeneratorConfig;
use Dedoc\Scramble\Scramble;
use Illuminate\Routing\Router;
use LogicException;
class GeneratorConfigCollection
{
/**
* @var array<string, GeneratorConfig>
*/
private array $apis = [];
public function __construct()
{
$this->apis[Scramble::DEFAULT_API] = $this->buildDefaultApiConfiguration();
}
private function buildDefaultApiConfiguration(): GeneratorConfig
{
return (new GeneratorConfig)
->expose(
ui: fn (Router $router, $action) => $router->get('docs/api', $action)->name('scramble.docs.ui'),
document: fn (Router $router, $action) => $router->get('docs/api.json', $action)->name('scramble.docs.document'),
);
}
public function get(string $name): GeneratorConfig
{
if (! array_key_exists($name, $this->apis)) {
throw new LogicException("$name API is not registered. Register the API using `Scramble::registerApi` first.");
}
return $this->apis[$name];
}
public function register(string $name, array $config): GeneratorConfig
{
$this->apis[$name] = $generatorConfig = $this->apis[Scramble::DEFAULT_API]
->cloneWithoutExposing()
->useConfig(array_merge(config('scramble') ?: [], $config));
return $generatorConfig;
}
public function all(): array
{
return $this->apis;
}
}
+90
View File
@@ -0,0 +1,90 @@
<?php
namespace Dedoc\Scramble\Configuration;
use Dedoc\Scramble\Infer\Configuration\ClassLike;
use Dedoc\Scramble\Infer\Configuration\DefinitionMatcher;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
/**
* @internal
*/
class InferConfig
{
/** @var DefinitionMatcher[] */
private array $forcedAstSourcedDefinitionsMatchers = [];
/** @var DefinitionMatcher[] */
private array $forcedReflectionSourcedDefinitionsMatchers = [];
/**
* @param (string|DefinitionMatcher)[] $items
* @return $this
*/
public function buildDefinitionsUsingAstFor(array $items): static
{
$this->forcedAstSourcedDefinitionsMatchers = [
...$this->forcedAstSourcedDefinitionsMatchers,
...array_map(
fn ($item) => is_string($item) ? new ClassLike($item) : $item,
Arr::wrap($items),
),
];
return $this;
}
/**
* @param (string|DefinitionMatcher)[] $items
* @return $this
*/
public function buildDefinitionsUsingReflectionFor(array $items): static
{
$this->forcedReflectionSourcedDefinitionsMatchers = [
...$this->forcedReflectionSourcedDefinitionsMatchers,
...array_map(
fn ($item) => is_string($item) ? new ClassLike($item) : $item,
Arr::wrap($items),
),
];
return $this;
}
/**
* @param DefinitionMatcher[] $matchers
*/
private function matchesAnyDefinitionMatcher(string $class, array $matchers): bool
{
foreach ($matchers as $item) {
if ($item->matches($class)) {
return true;
}
}
return false;
}
public function shouldAnalyzeAst(string $class): bool
{
if ($this->matchesAnyDefinitionMatcher($class, $this->forcedReflectionSourcedDefinitionsMatchers)) {
return false;
}
if ($this->matchesAnyDefinitionMatcher($class, $this->forcedAstSourcedDefinitionsMatchers)) {
return true;
}
// Ignoring static analysis error due to it is fine to exception to be thrown here if bad input.
$reflection = new \ReflectionClass($class); // @phpstan-ignore argument.type
$path = $reflection->getFileName();
if (! $path) {
return true; // Keep in mind the internal classes are analyzed via AST analyzer
}
return ! Str::contains($path, DIRECTORY_SEPARATOR.'vendor'.DIRECTORY_SEPARATOR);
}
}
@@ -0,0 +1,24 @@
<?php
namespace Dedoc\Scramble\Configuration;
use Dedoc\Scramble\Enums\JsonApiArraySerialization;
use Illuminate\Http\Resources\JsonApi\JsonApiResource;
class JsonApiConfig
{
public function __construct(
public readonly JsonApiArraySerialization $arraySerialization = JsonApiArraySerialization::Comma,
public readonly ?int $maxRelationshipDepth = null,
) {}
/** @return non-negative-int */
public function maxRelationshipDepth(): int
{
if ($this->maxRelationshipDepth === null) {
return JsonApiResource::$maxRelationshipDepth; // @phpstan-ignore return.type
}
return max(0, min($this->maxRelationshipDepth, JsonApiResource::$maxRelationshipDepth));
}
}
@@ -0,0 +1,69 @@
<?php
namespace Dedoc\Scramble\Configuration;
use Dedoc\Scramble\Contracts\OperationTransformer;
use Dedoc\Scramble\Support\OperationExtensions\DeprecationExtension;
use Dedoc\Scramble\Support\OperationExtensions\ErrorResponsesExtension;
use Dedoc\Scramble\Support\OperationExtensions\RequestBodyExtension;
use Dedoc\Scramble\Support\OperationExtensions\RequestEssentialsExtension;
use Dedoc\Scramble\Support\OperationExtensions\ResponseExtension;
use Dedoc\Scramble\Support\OperationExtensions\ResponseHeadersExtension;
use Illuminate\Support\Arr;
class OperationTransformers
{
protected array $transformers = [];
protected array $appends = [];
protected array $prepends = [];
public function append(array|callable|string $transformers)
{
$this->appends = array_merge(
$this->appends,
Arr::wrap($transformers)
);
return $this;
}
public function prepend(array|callable|string $transformers)
{
$this->prepends = array_merge(
$this->prepends,
Arr::wrap($transformers)
);
return $this;
}
public function use(array $transformers)
{
$this->transformers = $transformers;
return $this;
}
/**
* @return list<callable|class-string<OperationTransformer>>
*/
public function all(): array
{
$base = $this->transformers ?: [
RequestEssentialsExtension::class,
RequestBodyExtension::class,
ErrorResponsesExtension::class,
ResponseExtension::class,
ResponseHeadersExtension::class,
DeprecationExtension::class,
];
return array_values(array_unique([
...$this->prepends,
...$base,
...$this->appends,
], SORT_REGULAR));
}
}
@@ -0,0 +1,88 @@
<?php
namespace Dedoc\Scramble\Configuration;
use Dedoc\Scramble\Support\OperationExtensions\ParameterExtractor\AttributesParametersExtractor;
use Dedoc\Scramble\Support\OperationExtensions\ParameterExtractor\FormRequestParametersExtractor;
use Dedoc\Scramble\Support\OperationExtensions\ParameterExtractor\JsonApiResourceParametersExtractor;
use Dedoc\Scramble\Support\OperationExtensions\ParameterExtractor\MethodCallsParametersExtractor;
use Dedoc\Scramble\Support\OperationExtensions\ParameterExtractor\ParameterExtractor;
use Dedoc\Scramble\Support\OperationExtensions\ParameterExtractor\PathParametersExtractor;
use Dedoc\Scramble\Support\OperationExtensions\ParameterExtractor\ValidateCallParametersExtractor;
use Illuminate\Support\Arr;
class ParametersExtractors
{
/** @var class-string<ParameterExtractor>[] */
protected array $extractors = [];
/** @var class-string<ParameterExtractor>[] */
protected array $appends = [];
/** @var class-string<ParameterExtractor>[] */
protected array $prepends = [];
/**
* @param class-string<ParameterExtractor>[]|class-string<ParameterExtractor> $extractor
* @return $this
*/
public function append(array|string $extractor): self
{
$this->appends = array_merge(
$this->appends,
Arr::wrap($extractor)
);
return $this;
}
/**
* @param class-string<ParameterExtractor>[]|class-string<ParameterExtractor> $extractor
* @return $this
*/
public function prepend(array|string $extractor): self
{
$this->prepends = array_merge(
$this->prepends,
Arr::wrap($extractor)
);
return $this;
}
/**
* @param class-string<ParameterExtractor>[] $extractors
* @return $this
*/
public function use(array $extractors): self
{
$this->extractors = $extractors;
return $this;
}
/**
* @return class-string<ParameterExtractor>[]
*/
public function all(): array
{
$base = $this->extractors ?: [
PathParametersExtractor::class,
FormRequestParametersExtractor::class,
ValidateCallParametersExtractor::class,
JsonApiResourceParametersExtractor::class,
];
$defaultAppends = [
MethodCallsParametersExtractor::class,
AttributesParametersExtractor::class,
];
return array_values(array_unique([
...$this->prepends,
...$base,
...$this->appends,
...$defaultAppends,
]));
}
}
@@ -0,0 +1,32 @@
<?php
namespace Dedoc\Scramble\Configuration;
use Illuminate\Support\Arr;
class RendererConfig
{
public readonly string $view;
private array $config;
/**
* @param array{view: string} $config
*/
public function __construct(
array $config = []
) {
$this->config = Arr::except($config, ['view']);
$this->view = $config['view'];
}
public function get(string $key, mixed $default = null): mixed
{
return Arr::get($this->config, $key, $default);
}
public function all(array $except = []): array
{
return Arr::except($this->config, $except);
}
}
@@ -0,0 +1,97 @@
<?php
namespace Dedoc\Scramble\Configuration;
use Dedoc\Scramble\Contracts\AllRulesSchemasTransformer;
use Dedoc\Scramble\Contracts\RuleTransformer;
use Dedoc\Scramble\RuleTransformers\ConfirmedRule;
use Dedoc\Scramble\RuleTransformers\EnumRule;
use Dedoc\Scramble\RuleTransformers\ExistsRule;
use Dedoc\Scramble\RuleTransformers\InRule;
use Dedoc\Scramble\RuleTransformers\RegexRule;
use Dedoc\Scramble\Support\ContainerUtils;
use Illuminate\Support\Arr;
use Illuminate\Support\Collection;
class RuleTransformers
{
/** @var list<class-string<RuleTransformer|AllRulesSchemasTransformer>> */
protected array $transformers = [];
/** @var list<class-string<RuleTransformer|AllRulesSchemasTransformer>> */
protected array $appends = [];
/** @var list<class-string<RuleTransformer|AllRulesSchemasTransformer>> */
protected array $prepends = [];
/**
* @param class-string<RuleTransformer|AllRulesSchemasTransformer>|list<class-string<RuleTransformer|AllRulesSchemasTransformer>> $transformers
*/
public function append(array|string $transformers): self
{
$this->appends = array_values(array_merge( // @phpstan-ignore arrayValues.list
$this->appends,
Arr::wrap($transformers)
));
return $this;
}
/**
* @param class-string<RuleTransformer|AllRulesSchemasTransformer>|list<class-string<RuleTransformer|AllRulesSchemasTransformer>> $transformers
*/
public function prepend(array|string $transformers): self
{
$this->prepends = array_values(array_merge( // @phpstan-ignore arrayValues.list
$this->prepends,
Arr::wrap($transformers)
));
return $this;
}
/**
* @param list<class-string<RuleTransformer|AllRulesSchemasTransformer>> $transformers
*/
public function use(array $transformers): self
{
$this->transformers = $transformers;
return $this;
}
/**
* @template TExtensionType of object
*
* @param class-string<TExtensionType> $type
* @param array<string, mixed> $contextfulBindings
* @return Collection<int, TExtensionType>
*/
public function instances(string $type, array $contextfulBindings): Collection
{
return collect($this->all()) // @phpstan-ignore return.type
->filter(fn ($class) => is_a($class, $type, true))
->map(fn ($class) => ContainerUtils::makeContextable($class, $contextfulBindings))
->values();
}
/**
* @return list<class-string<RuleTransformer|AllRulesSchemasTransformer>>
*/
public function all(): array
{
$base = $this->transformers ?: [
EnumRule::class,
InRule::class,
ConfirmedRule::class,
ExistsRule::class,
RegexRule::class,
];
return array_values(array_unique([
...$this->prepends,
...$base,
...$this->appends,
], SORT_REGULAR));
}
}
@@ -0,0 +1,17 @@
<?php
namespace Dedoc\Scramble\Configuration;
use Dedoc\Scramble\GeneratorConfig;
use Illuminate\Support\Collection;
class SecurityDocumentationContext
{
/**
* @param Collection<int, \Illuminate\Routing\Route> $routes
*/
public function __construct(
public readonly Collection $routes,
public readonly GeneratorConfig $config,
) {}
}
@@ -0,0 +1,32 @@
<?php
namespace Dedoc\Scramble\Configuration;
use Dedoc\Scramble\Support\Generator\ServerVariable;
class ServerVariables
{
/**
* @param array<string, ServerVariable> $items
*/
public function __construct(public array $items = []) {}
public function use(array $items)
{
$this->items = $items;
return $this;
}
public function all()
{
return $this->items;
}
public function set(string $name, ServerVariable $serverVariable)
{
$this->items[$name] = $serverVariable;
return $this;
}
}

Some files were not shown because too many files have changed in this diff Show More